2010-11-18 37 views
0

我正在开发一款较旧的Mac。我无法访问运行Xcode 3.1的较新Mac,但我想确保我的源代码可以在其上运行。到目前为止,这很容易,我所要做的就是忽略名称旁边的“已弃用”的任何内容,但是从NIB到XIB的变化让我感到沮丧。我读过的东西似乎意味着XIB在Release版本中被编译到NIB中,但也许它们不在Debug版本中编译。[NSBundle loadNibNamed:owner:]如何在Xcode 3.1中工作?

这会在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,期间,我不必担心这些?

+0

它在任何其他开发环境中的工作方式都是一样的。这是一种可可方法,而不是Xcode IDE的功能。可可最终是操作系统的一部分,所以,你问的是什么版本的操作系统? – 2010-11-19 05:47:23

回答

1

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

+0

优秀!这真的很好知道。我一直看到有人说XIBs会在“应用程序部署”期间被编译到NIBs,我认为这可能意味着“仅在发布版本期间”。谢谢你解决我真诚可怜的问题。 – user512530 2010-11-19 05:35:23

相关问题