2010-11-18 42 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

相關問題