OCMock在用于子视图控制器时抛出EXC_BAD_ACCESS

时间:2013-10-07 06:58:44

标签: ios exc-bad-access ocmock xctest

我有一个XCTest案例,其中包含以下代码:

#import <XCTest/XCTest.h>
#import <OCMock/OCMock.h>

@interface ChildViewControllerTests : XCTestCase
@end

@implementation ChildViewControllerTests

-(void) testInitAddsPassedControllersAsChildViews {
    id mockTVC1 = [OCMockObject niceMockForClass:[UITableViewController class]];
    id mockTVC2 = [OCMockObject niceMockForClass:[UITableViewController class]];
    UIViewController *controller = [[UIViewController alloc] init];
    [controller addChildViewController:mockTVC2]; // Fails if mockTVC2, but mockTVC1 works.
}

@end

它就像我能做到的一样简单。当我运行此测试时,我得到一个EXEC_BAD_ACCESS deallocing mockTVC2。

如果我将mockTVC1添加到控制器,它可以正常工作。

如果我交换mockTVC1和mockTVC2声明的顺序,它就可以正常工作。

如果我交换mockTVC1和mockTVC2声明的顺序并更改为添加mockTVC1,它将再次失败取消分配。

所以我的总结是问题与第二个模拟的声明有关,因为无论我如何命令声明,如果我试图将第二个模拟声明添加到控制器,那么当解除分配时它会失败

你们中的一些人可以做一个快速切割粘贴,看看你是否也会这样做?

我想确认一下,不仅仅是我的设置。

由于

0 个答案:

没有答案