Я разработал способ запуска моего приложения Cocoa (GUI). Либо обычным двойным щелчком по нему, либо из интерфейса командной строки.
Я понял, что когда приложение запускается двойным щелчком (GUI), оно возвращает счетчик аргументов (argc), равный 2.
Но при запуске из CLI он будет иметь argc равное 1. Пока я сам не привожу никаких аргументов.
Это означает, что я могу использовать if .. else .., чтобы определить, как было запущено приложение.
Это отлично работает для моего приложения, поскольку мне не нужно приводить аргументы.
Но мне было интересно, есть ли лучший способ сделать это.
Вот пример кода в файле main.m
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
//This determins if the app is launched from the command line or app itself is opened.
if (argc == 1) {
//app was run from CLI
// Create a object
MyClass *mMyClass;
mMyClass = [[MyClass alloc] init];
// Read the Buffer
[mMyClass readBuffer];
// Write out file on disk
[mMyClass createFile];
[mMyClass doMoreStuff];
[mMyClass release];
mMyClass = nil;
return 0;
} else {
//app was doubled click, (Opened)
return NSApplicationMain(argc, (const char **) argv);
;
// */
// return NSApplicationMain(argc, (const char **) argv);
}
[pool drain];
}
Огромное спасибо. M
NSApplicationMain
создает свои собственные пулы. - person JeremyP   schedule 04.01.2011