0

我正在使用较旧的 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,期间,我不必担心这些?

4

1 回答 1

1

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

于 2010-11-18T22:19:21.110 回答