我有一个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,它将再次失败取消分配。
所以我的总结是问题与第二个模拟的声明有关,因为无论我如何命令声明,如果我试图将第二个模拟声明添加到控制器,那么当解除分配时它会失败
你们中的一些人可以做一个快速切割粘贴,看看你是否也会这样做?
我想确认一下,不仅仅是我的设置。
由于