[NSBundle loadNibNamed:owner:]如何在Xcode 3.1中工作?

时间:2010-11-18 18:26:05

标签: cocoa macos nib nsbundle

我正在使用较旧的Mac开发。我无法访问运行Xcode 3.1的新Mac,但我想确保我的源代码可以使用它们。到目前为止,这很简单,我所要做的就是忽略名称旁边的“弃用”,但从NIB到XIB的变化让我有点绊倒。我读过的东西似乎暗示XIB在Release版本中被编译成NIB,但是在Debug版本中它们可能不会。

这会在Xcode 3.1中做些什么?

#import <Cocoa/Cocoa.h>

int main(int argc, char *argv[])
{
 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
 [NSApplication sharedApplication];

 [NSBundle loadNibNamed:@"MainMenu" owner: NSApp];
 [[NSApp mainMenu] removeItem: [[NSApp mainMenu]itemWithTitle: @"File"]]; 

 [pool release];
 [NSApp run];
 return NSApplicationMain(argc,  (const char **) argv);
}

调试失败,因为MainMenu.nib不存在?或者,每次应用程序编译时,XIB都会变成NIB,期间,我不必担心这个问题吗?

1 个答案:

答案 0 :(得分:1)

总是将XIB编译为NIB以便在运行时使用。 XIB只是一种基于XML的存储格式。通过编译XIB生成的NIB不包含编辑NIB文件所需的信息:XIB编译为只读 NIB。这根本不影响应用程序使用它们的方式:就其而言,NIB是NIB是NIB。

相关问题