ios開發——錯誤總結篇&開發中常見錯誤和警告總結(十三)

來源:互聯網
上載者:User

標籤:

開發中常見錯誤和警告總結(十三)

混編總結

 Objective-c調用Swift代碼

 Objective-c調用Swift代碼兩個步驟

第一步告訴Xcode哪些類需要使用(繼承自NSObject的類自動處理,不需要此步驟),通過關鍵字@objc(className)來標記

 
1 import UIKit2 @objc(ILWriteBySwift)3 class ILWriteBySwift {4     var name: String!5     class func newInstance() -> ILWriteBySwift {6         return ILWriteBySwift()7     }8 }

 

第二步引入標頭檔,Xcode標頭檔的命名規則為

  1 $(SWIFT_MODULE_NAME)-Swift.h 

樣本如下:

 
#import "ILSwift-Swift.h"

  Tips

不清楚SWIFT_MODULE_NAME可通過以下步驟查看

 找不到$(SWIFT_MODULE_NAME)-Swift.h

 

1.遇到此問題可按以下步驟做常規性檢查

  • 確定匯入SWIFT_MODULE_NAME)-Swift.h標頭檔的檔案名稱正確

  • SWIFT_MODULE_NAME)-Swift.h在clean後沒有重新構建,執行Xcode->Product->Build

2.標頭檔迴圈

在混合編程的項目中,由於兩種語言的同時使用,經常會出現以下需求:在Swift項目中需要使用Objectvie-c寫的A類,而A類又會用到Swift的一些功能,標頭檔的迴圈,導致編譯器不能正確構建$(SWIFT_MODULE_NAME)-Swift.h,遇到此問題時,在.h檔案做如下處理

 
//刪除以下標頭檔//#import "ILSwift-Swift.h"//通過代碼匯入類@class ILSwiftBean;

 

在Objevtive-c的.m檔案最上面,添加

 
#import "ILSwift-Swift.h"

 

出現Use of undecalared identifier錯誤或者找不到方法,如下:

引起的原因有以下幾種可能:

  • 使用的Swift類不是繼承自NSObject,加入關鍵字即可

  • SWIFT_MODULE_NAME)-Swift.h沒有即時更新,Xcode->Product->Build

  • 此Swift檔案中使用了Objective-c不支援的類型或者文法,如private

出現部分方法找不到的問題,Xcode無智能提示:

  • 此方法使用了Objective-c不支援的類型或者文法

蘋果官方給出的不支援轉換的類型

    • Generics

    • Tuples

    • Enumerations defined in Swift

    • Structures defined in Swift

    • Top-level functions defined in Swift

    • Global variables defined in Swift

    • Typealiases defined in Swift

    • Swift-style variadics

    • Nested types

    • Curried functions

ios開發——錯誤總結篇&開發中常見錯誤和警告總結(十三)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.