2015-11-03 56 views
1

斯威夫特documentation@NSApplicationMain寫着:是@NSApplicationMain文檔的快速正確嗎?

使用這個屬性就相當於調用 NSApplicationMain( :)功能,通過這個類的名字作爲委託類的 名稱。

NSApplicationMain簽名只接收argcargv,沒辦法「類名」傳遞給它。在互聯網上,我發現了兩個「例子」,可以如何使用@NSApplicationMain等價物。首先一個簡單的調用NSApplicationMain

NSApplicationMain(Process.argc, Process.unsafeArgv) 

第二個創建共享應用單並設置委託給它:

NSApplication.sharedApplication() 
NSApp.delegate = AppDelegate() 
NSApplicationMain(Process.argc, Process.unsafeArgv) 

出人意料的是,嚮導創建的應用程序有兩種版本的工作(使用前委託我可以NSLog)!怎麼會這樣?可能委託被忽略的OSX應用程序和main nib file總是使用指定?或者這是一些隱藏的邏輯,而我還無法掌握的NSApplicationMainUIApplicationMain?任何提示?

回答

2

是的,這裏的文檔看起來不太正確。我建議filing a bug,以便他們知道修復文檔。

的傳統方法建立一個可可應用程序是這樣的:

  1. Info.plist中指定主體類應用程序束(NSApplication或其亞類)
  2. MainMenu.nib(或xib)文件包含應用程序委託類的實例
  3. 從C main調用NSApplicationMain,它使用步驟1和2中的信息設置您的應用程序。

您也可以在C main中以編程方式執行所有操作,如您在問題中所示。

Swift @NSApplicationMain指令自動處理啓動應用程序,並將委託設置爲您將該指令應用到的類(因此您不再需要用筆尖設置委託,也不需要以編程方式設置委託)。