尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️
Apple於2014年6月推出了名為「Swift」的新母語,用於為iPhone、iPod、Apple Watch和其他蘋果設備創建應用程序。Apple承諾它比Objective-C更快更簡單。在本文中,我們將討論如何將用Objective-C語言編寫的舊版iOS應用程序轉換為Swift,而無需從頭開始重寫所有代碼。
第1步:創建Swift文件
第一步很簡單,就像在Objective-C應用程序中創建Swift文件一樣簡單。要創建Swift文件,請轉到Xcode中的New File菜單,然後選擇iOS source,然後從iOS Source菜單中選擇Swift文件。點擊下一步按鈕。寫下文件名,然後單擊「創建」按鈕。
現在您將看到Xcode中彈出橋接標題,Xcode自動創建一個名為「bridging header」的文件和後台的另一個文件。
bridging header文件允許您的項目與Objective-C類和Swift類進行通信。因此,項目配置為在混合模式下工作,其中代碼可以作為Objective-C文件或Swift文件存在。
第2步:將所有頭文件導入橋接文件
在設置了橋接文件之後,我們將把我們想要在Swift中使用的Objective C類中的所有項目頭文件移動到這個橋接文件中。
這個橋接文件允許我們在Swift類中創建Objective-C對象。在這個階段,我們可以在Swift中創建Objective-C類的對象,但是,如果我們嘗試在Objective-C類中創建Swift類對象,它將顯示錯誤。為什麼?
第3步:在Xcode中導入後台Swift FileGenerated 以允許Objective-C中的Swift對象
橋接文件允許將Objective-C類導入到Swift類中,但不允許在Objective-C類中創建Swift類對象。要解決這個問題,我們將需要在步驟1中創建Swift文件時由Xcode生成的後台文件。我們需要將隱藏的(Xcode生成的後台文件)Swift文件導入到Objective-C類中以在Objective中創建Swift對象-C。該文件的名稱將使用以下命名模式:「NameOfTheProject-swift.h」。在示例中,我的項目名稱是「Guilder」,因此Xcode生成的文件名是「Guilder-swift.h」,看下面給出的截圖。
讓我們總結一下這三步過程:
在Objective C應用程序中創建Swift文件時,需要單擊「接受」以創建橋接文件。
將所需的Objective-C頭文件放入您創建的橋接文件中,以便在Swift中訪問這些類。
在要訪問Objective-C類的Swift類中,您將導入隱藏的Xcode生成的文件。
有時項目的源代碼很多,需要花費大量時間將Objective-C中編寫的每個文件更改為Swift,從而使從頭開始重寫整個項目變得更加容易。在這種情況下,您可以使用在線轉換工具轉換Objective-C Swift,例如Swiftify。使用這些工具轉換應用程序後,您可能仍會看到一些錯誤和語法錯誤,例如:
變量的雙重定義。
錯誤的可選和功能簽名
Swift版本問題
Xcode建議修復
空值檢查
但是,這些問題可以解決,工具可以節省大量的時間和人力。例如,要解決變量問題的雙重定義,您需要刪除重復的聲明。另一個例子是如何解決選項問題,使用if..else或let guard語句,而不是解包變量,這是因為展開容易出錯。
總而言之,橋接機制以及由XCode生成的隱藏Swift文件為Objective-C和Swift類提供了一種相互通信並消耗彼此服務的方法。因此,我們可以在Swift中創建包裝類,並使用Objective-C類來提供相同的功能而無需重寫任何內容。