2016-04-15 75 views
0

我正在尋找將我的Objective-c應用程序委託從Swift應用程序委託中取代。我已經在Swift中轉換了大量的代碼,希望最終能夠隱藏App-Delegate。我一直在研究互聯網,並沒有找到任何實際的具體信息去實現這一點,所以我想這可能會有助於創建一個有關該主題的StackOverFlow問題。看起來我可以從X代碼中的File-> New file菜單創建一個新的應用程序委託。但我的問題是編譯器如何知道選擇Swift App-Delegate VS Objective-C App-Delegate?我查看過構建設置,還沒有發現任何指向此代理的內容(除構建階段外)。任何幫助將不勝感激。謝謝!換掉應用程序委託objective-c文件並用swift App委託代替?

+0

更容易開始一個新的目標,迅速並從那裏工作。您不應該將同一個類的.m和.swift鏈接到同一個目標,否則您將從編譯器中獲得重複的符號錯誤。看看這個[鏈接](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/Migration.html) – Bamsworld

回答

0

假設此項目構建爲Objective-C項目,您應該有一個main.m文件,其中包含對UIApplicationMain的調用。該調用中的最後一個參數指定應用程序委託類名稱。

0

在Obj-C文件中main.m是程序的輸入點。在這個文件中,你知道哪些類將通過調用函數UIApplicationMain是應用程序的委託:

UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 

在斯威夫特可以使用@UIApplicationMainattribute您AppDelegate類指示輸入點和委託類。或者你可以創建main.swift文件。

在同一個項目中,您不能同時擁有main.mmain.swift(或具有@UIApplicationMain屬性的應用程序委託類)。在這種情況下,你會得到鏈接錯誤。

因此,切換到您的應用程序委託的Swift實現,你需要用屬性標記它,然後刪除舊的Obj-C類和main.m文件。或者您需要在main.m文件中指定新類。