Ios nib类在不同的目标中是不同的?
我正在尝试编写一个设置视图控制器的单元测试,我尝试了两种方法来获取视图初始化,第一种方法是使用捆绑包加载nib内容并过滤掉我正在寻找的内容,如下所示:Ios nib类在不同的目标中是不同的?,ios,objective-c,cocoa,viewcontroller,Ios,Objective C,Cocoa,Viewcontroller,我正在尝试编写一个设置视图控制器的单元测试,我尝试了两种方法来获取视图初始化,第一种方法是使用捆绑包加载nib内容并过滤掉我正在寻找的内容,如下所示: MyViewController *controller = nil; .... NSArray* nibContents = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil]; NSEnumerator *nibEnumerator = [nibConte
MyViewController *controller = nil;
....
NSArray* nibContents = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil];
NSEnumerator *nibEnumerator = [nibContents objectEnumerator];
NSObject* nibItem = nil;
while ( (nibItem = [nibEnumerator nextObject]) != nil) {
if ([nibItem isKindOfClass:[MyViewController class]]) {
controller = (MyViewController*) nibItem;
break;
} else {
NSLog(@"nibItem class is %@", [nibItem class]);
NSLog(@"nibItem is %@", nibItem);
}
}
在这些代码完成后,控制器仍然为零,我插入了一些日志来检查nib类(占位符%@),结果证明它与MyViewController相同(至少两个类的描述都是这样),我确信这些代码在调试/发布目标中工作得很好,但在我运行单元测试时它没有工作
那么这是否意味着尽管它们的类描述相同,但它们是不同的呢
我尝试过的第二种方法是使用initWithNibNamed:owner:options方法,只需指定xib文件名,但Xcode会回答nib已加载但未设置视图出口,这种情况正如我发现的问题所述,但我已仔细检查是否已正确设置:
MyViewController *controller;
NSArray* nibContents = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil];
controller=(MyViewController *)[nibContents objectAtIndex:0];
用此代码替换您现有的代码,希望这将对您有所帮助。它可以工作!谢谢Gaurav Rastogi!顺便问一下,有什么我可以参考的,知道为什么会发生这种情况?