2011-11-14 63 views
1

我在OCMock和UIView中遇到了一些麻煩。EXC_BAD_ACCESS with partialMockForObject和UIView

我有那種這段代碼:

UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10, 10)]; 
id view1Mock = [OCMockObject partialMockForObject:view1]; 

[[[view1Mock expect] andForwardToRealObject] removeFromSuperview]; 

... something ... 

[view1Mock verify]; 

而且我得到真正往往對[[[view1Mock想到] andForwardToRealObject] removeFromSuperview]一個EXC_BAD_ACCESS。但不是每次。這很煩人,因爲我無法將它追蹤到OCMock的行,並且它不會每次都發生。

有什麼想法?

編輯:

我用啓用了新的蘋果LLVM編譯器3.0與ARC,我認爲這可能是原因。但我想解決它。有沒有人試圖用ARC編譯OCMock?

最良好的祝願, 丹尼爾

+0

我遇到了完全相同的問題。它只是間歇性地發生,我只是像你一樣嘲笑一個UIView。唯一的區別是,當我的應用程序代碼試圖將模擬對象添加爲子視圖時,我得到一個EXC_BAD_ACCESS。 – jaker

回答

1

爲「removeFromSurperview」是一個用戶界面的方法,也許這可以應主線程中執行。

問候,

1

行,你有時收到EXC_BAD_ACCESS可以是一個線索,問題的原因。雖然這並不確定。有問題的代碼可能在其他地方。

當然,你的代碼看起來不錯。只要你稍後在view1上做release

UI操作必須在主線程上運行。但是,這不會導致EXC_BAD_ACCESS或任何其他顯式異常。

因此,要找出問題的根本原因,第一步是運行分析器。然後,使用儀器中的泄漏工具。

有關詳細信息,有什麼原因導致這些錯誤,並步步爲如何解決這些問題的逐步說明優秀的鏈接一起,看看這些問題的答案:

finding reason for EXC_BAD_ACCESS - in Xcode4

Random EXC_BAD_ACCESS in a place that it cannot happen