これが私のコードテンプレートです:
int main(int argc, char *argv[]) {
// create an autorelease pool
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
// make sure the application singleton has been instantiated
NSApplication * application = [NSApplication sharedApplication];
// instantiate our application delegate
AppDelegate * applicationDelegate =
[[[AppDelegate alloc] init] autorelease];
// assign our delegate to the NSApplication
[application setDelegate:applicationDelegate];
// call the run method of our application
[application run];
// drain the autorelease pool
[pool drain];
// execution never gets here ..
return 0;
}
「[pooldrain]」の後に「return0」が続くのはなぜ実行されないのか。
しかし、私は別のgnustepの公式例を見つけました。それは同じことをします。
int
main(int argc, char **argv, char** env)
{
id pool = [NSAutoreleasePool new];
NSApplication *theApp;
#if LIB_FOUNDATION_LIBRARY
[NSProcessInfo initializeWithArguments:argv count:argc environment:env];
#endif
theApp = [NSApplication sharedApplication];
[theApp setDelegate: [browserController new]];
[theApp run];
[pool release];
return 0;
}
「[theApprun]」が二度と戻らないことを証明するために、「[theApprun]」の直後に無限ループを追加して練習しましたが、実行されることはありません。なぜGNUSTEPオフィシャルの例がそのようなことをしたのですか?