NSApplicationMainのドキュメントには、次のように記載されています。
アプリケーションを作成し、アプリケーションのメインバンドルからメインnibファイルをロードして、アプリケーションを実行します。この関数は、アプリケーションのメインスレッドから呼び出す必要があります[...]。
「メインスレッド」は明らかに、プログラムの最初のスレッドを指し、そこでmain(argc, argv)
開始します。NSThreadのドキュメントをざっと見る+ (BOOL)isMainThread
と、現在のスレッドが「メイン」スレッドであるかどうかを判断するために使用できることがわかります。いくつかのテストを実行しました。このメソッドNSApplicationMain
は、まだ呼び出されているかどうかに関係なく機能します。
私の質問には2つの(ある程度関連する)部分があります:
- のメインスレッドの何がそんなに特別なの
NSApplicationMain
ですか? - そもそもCocoaはメインスレッドをどのように識別しますか?