Как [NSBundle loadNibNamed: owner:] работает в Xcode 3.1? - PullRequest
0 голосов
/ 18 ноября 2010

Я работаю на старом Mac. У меня нет доступа к новым Mac с Xcode 3.1, но я хочу убедиться, что мой исходный код будет работать на них. До сих пор это было довольно легко, все, что мне нужно сделать, это игнорировать что-либо с «устарелым» рядом с его именем, но переход от NIB к XIB приводит меня в замешательство. То, что я прочитал, по-видимому, подразумевает, что XIB компилируются в NIB во время сборки Release, но, возможно, они не во время сборки 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 Ответ

1 голос
/ 19 ноября 2010

XIB всегда компилируются в NIB для использования во время выполнения.XIB - это просто формат хранения на основе XML.NIB, созданные путем компиляции XIB, не содержат информацию, необходимую для редактирования файла NIB: XIB компилируется в только для чтения NIB.Это никак не влияет на то, как ваше приложение использует их вообще: NIB - это NIB - это NIB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...