我从未加载过 bundle ,所以我不确定为什么这不起作用。我认为这并不重要,但这里有问题的 .xib 与我所有其他 .xib 位于同一个资源文件夹中。
NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"S3AsyncView" owner:self];
返回此错误:
Instance method -loadNibNamed:owner not found. Return type defaults to id
我觉得这个错误很奇怪,因为[NSBundle mainBundle]的返回类型当然是NSBundle。
最佳答案
NSBundle 中没有这样的方法,因此出现错误。
我猜您正在寻找:
loadNibNamed:owner:options:
您可以通过nil
到选项,因为它期望 NSDictionary
所以在你的情况下:
NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"S3AsyncView" owner:self options:nil];
编辑
如果仍然不起作用,请验证您是否已包含 <UIKit/UIKit.h>
.
编辑2
好的,现在我明白了。您用 iOS 标记了您的问题,但现在您说它是一个 Cocoa 应用程序。
loadNibNamed:owner:options:
是 UIKit 的补充,因此仅适用于 iPhone。
在 Mac OS X 上,您将使用 + (BOOL)loadNibNamed:(NSString *)aNibName owner:(id)owner
类方法。
所以:
NSArray *array = [ NSBundle loadNibNamed: @"whatever" owner: self ];
关于objective-c - 为什么 [NSBundle mainBundle] 在这里不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7336232/