標籤:
開發中常見錯誤和警告總結(十)
混編常見錯誤:
把 Swift 和 Objective-C 檔案看作相同的代碼集合,並注意命名衝突。
如果你使用了架構,確保在Packaging下的Defines Module編譯設定被設定為 Yes。
如果你使用了 Objective-C 橋接標頭檔,確保 Swift 編譯器中 Objective-C 橋接標頭檔的編譯設定Code Generation有一個與項目相關的標頭檔的路徑。這個路徑必須是標頭檔自身的路徑,而不是它所在的目錄。
Xcode 使用你的工程模組名,而不是以target的名稱來命名 Objective-C 橋接標頭檔以及為 Swift 代碼 自動產生的標頭檔。詳見 Naming Your Product Module。
為了在 Objective-C 中可用, Swift 類必須是 Objective-C 類的子類,或者用 @objc 標記。
當你將 Swift 匯入到 Objective-C 中時,記住 Objective-C 不會將 Swift 專屬的特性轉化成 Objective-C 對應的特性。詳見列表 Using Swift from Objective-C。
如果你在 Swift 代碼中使用你自己的 Objective-C 類型,確保先將對應的 Objective-C 標頭檔匯入到你的 Swift 代碼中,然後才將 Swift 自動產生的標頭檔匯入到 Objective-C .m 源檔案中來訪問 Swift 代碼。
用private修飾符標記的 Swift 聲明不會出現在自動產生的標頭檔中。私人聲明不會暴漏給 Objective-C,除非它們被明確標記有@IBAction,@IBOutlet或者@objc等。
對於應用 targets 而言,如果有 Objective-C 橋接標頭檔時,被internal修飾符標記的聲明會出現在自動產生的標頭檔中。
對於架構 targets 而言,只有被public修飾符標記的聲明才會出現在自動產生的標頭檔中。你仍然可以在架構中的 Objective-C 部分使用被internal修飾符標記的 Swift 方法和屬性,只要它們聲明所在的類繼承自 Objective-C 類。關於存取層級修飾符的更多資訊,請查看The Swift Programming Language中的存取控制(Access Control)
ios開發——錯誤總結篇&開發中常見錯誤和警告總結(十)