objective-c - 为什么 [NSBundle mainBundle] 在这里不起作用?

标签 objective-c cocoa

我从未加载过 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/

相关文章:

cocoa - 如何从 NSTextField 的字段编辑器中拦截击键?

iphone - 如何将 mp4 文件从文档复制到照片库(在 iPhone 中)?

ios - 如何在状态之间正确设置 UIButton 的动画?

ios - 安装 Google-Mobile-Ads-SDK 时出错

objective-c - 更改 NSScrollView 中 NSScroller 的高度

objective-c - 我可以将应用程序用作库(Mac、Objective-c)吗?

objective-c - NSTextView -(无效)setMarkedTextAttributes : method how to set which text is marked?

ios - 在更改 View (Segue) 时显示事件指示器并为下一个 View (API) 加载数据

ios - 自定义 UITableview 中的单个单元格

macos - 如何获取标准 Mac OS X 图标以在您的应用程序中使用?