2010-11-18 5 views
0

Ich entwickle auf einem älteren Mac. Ich habe keinen Zugriff auf neuere Macs mit Xcode 3.1, aber ich möchte sicherstellen, dass mein Quellcode auf ihnen funktioniert. Bisher war es ziemlich einfach, alles was ich zu tun habe ist, alles zu ignorieren, was neben seinem Namen "veraltet" heißt, aber der Wechsel von NIBs zu XIBs hat mich irgendwie zum Stolpern gebracht. Die Dinge, die ich gelesen habe, implizieren, dass XIBs während eines Release-Builds in NIBs kompiliert werden, aber vielleicht nicht während eines Debug-Builds.Wie funktioniert [NSBundle loadNibNamed: owner:] in Xcode 3.1?

Was würde dies in Xcode 3.1 tun?

#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); 
} 

Fehler beim Debuggen, weil MainMenu.nib nicht existiert? Oder werden XIBs jedes Mal in NIBs umgewandelt, wenn eine Anwendung kompiliert wird, und ich muss mir darüber keine Gedanken machen?

+0

Es funktioniert genauso wie in jeder anderen Entwicklungsumgebung. Das ist eine Cocoa-Methode, keine Funktion der Xcode-IDE. Cocoa ist letztendlich Teil des Betriebssystems, also nach welcher Version des Betriebssystems fragen Sie? –

Antwort

1

XIBs werden immer zur Laufzeit in NIBs kompiliert. XIB ist nur ein XML-basiertes Speicherformat. Die NIBs, die durch das Kompilieren der XIBs erzeugt werden, enthalten nicht die Informationen, die zum Bearbeiten der NIB-Datei benötigt werden: Ein XIB kompiliert zu einer schreibgeschützten NIB. Dies hat keinen Einfluss darauf, wie Ihre Anwendung sie überhaupt verwendet: Soweit es sich um eine NIB handelt, handelt es sich bei einer NIB um eine NIB.

+0

Ausgezeichnet! Das ist wirklich gut zu wissen. Ich hatte immer wieder Leute gesehen, die sagten, dass XIBs während der "Anwendungsbereitstellung" zu NIBs kompiliert werden würden, was ich vielleicht nur "während der Release-Builds" meinte. Danke, dass du meine ehrlich ziemlich erbärmliche Frage gelöst hast. – user512530

Verwandte Themen