Я разработал способ запуска моего приложения Cocoa (GUI). От обычного двойного щелчка по нему,
Или из CLI.
Я понял, что когда приложение запускается из двойного щелчка (GUI), оно возвращает количество аргументов ( argc ), равное 2.
Но при запуске из CLI он будет иметь argc , равный 1. До тех пор, пока я сам не приведу никаких аргументов.
Это означает, что я могу использовать если .. еще .. , чтобы определить, как было запущено приложение.
Это прекрасно работает для моего приложения, поскольку мне не нужно указывать аргументы.
Но мне стало интересно, есть ли лучший способ сделать это.
Вот пример кода в 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