Exception 使用partialMockForObject和UIView执行错误访问

Exception 使用partialMockForObject和UIView执行错误访问,exception,uiview,ocmock,Exception,Uiview,Ocmock,我在OCMock和UIView上遇到了一些麻烦 我有这样的代码: UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10, 10)]; id view1Mock = [OCMockObject partialMockForObject:view1]; [[[view1Mock expect] andForwardToRealObject] removeFromSuperview]; ... something ...

我在OCMock和UIView上遇到了一些麻烦

我有这样的代码:

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

[[[view1Mock expect] andForwardToRealObject] removeFromSuperview];

... something ...

[view1Mock verify];
而且我确实经常在[[[view1Mock expect]和ForwardToAllObject]removeFromSuperview]上获得EXC\u BAD\u访问权限。但不是每次。这很烦人,因为我无法在OCMock上追踪到这条线,而且不是每次都发生

有什么想法吗

编辑:

我使用新的Apple LLVM 3.0编译器,启用了ARC,我认为这可能就是原因。但我想把它修好。有人试过用ARC编译OCMock吗

致以最良好的祝愿,
Daniel

因为“RemoveFromSuperview”是一个UI方法,也许这应该在主线程中执行

在这方面,

您有时会收到
EXC\u BAD\u访问权限的行可以作为问题原因的线索。不过还不确定。有问题的代码可能在别处

当然,上面的代码看起来不错。只要您稍后在
view1
上执行
release

UI操作必须在主线程上运行。但是,这不会导致
EXC\u BAD\u访问
或任何其他显式异常

因此,要找到问题的根本原因,第一步是运行分析器。然后,在仪器中使用泄漏工具

有关详细信息,以及有关导致这些错误的原因的优秀链接以及如何修复这些错误的分步说明,请查看以下问题的答案:


我遇到了完全相同的问题。它只是间歇性地发生,我只是在嘲笑你这样的UIView。唯一的区别是,当我的应用程序代码试图将模拟对象添加为子视图时,我获得了EXC_BAD_访问权限。