swift3.0和Objective-C互動事項(轉)

來源:互聯網
上載者:User

轉載:swift3.0和Objective-C的互動需要注意這些

章,作者:ZeroJ(Gitbub)

Swift3.0出來後, 可以看到改變很大, 和cocoa, Foundation...的互動也變得更方便了, 同時Swift編寫的應用適配到iOS 7, 所以, 我們可以相信: 在未來使用swift的情況會逐漸增加了, 同時會涉及到OC和Swift在項目中並存的情況, 這裡我重新讀了官方的'Using swift with Cocoa and Objective-C(swift3)'的文檔, 記錄了一些個人覺得比較常用的筆記, 請大家選擇性閱讀(裡面的代碼 均來自文檔)

OC的初始化方法在Swift中被引為

1 2 3   init(...) --- 如果初始化不會失敗   init?(...) --- 如果初始化可能失敗   init!(...) --- 否則

oc中的property裡的(getter==, setter==)將會被swift忽略

id對應Anyobject 但是所有的Anyobject在swift中是可選值, 如果之前的值為可選值, 在被設定為Anyobject後就是多重可選值了

oc中的屬性被標記為

1 2 3 nullable -> 在swift中相當於 ? nonnull -> 在swift中相當於 非可選屬性 未標記 -> 在swift中相當於 !

oc中的輕量級泛型也是對應與swift中的泛型

1 2 @property NSArray *dates 對應於   var  dates: [Date]

swift 中的閉包預設捕獲變數的方式相當於 oc中block中捕獲被標記為 __block的變數方式 -> 就是說 閉包捕獲到的是變數的指標

swift中只要不是在多線程中, 建議使用[unowned self]來避免循環參考, 多線程中, 建議使用[weak self]

== 操作符相當於oc中的isEqual: --- 即比較內容是否相等;=== 相當於oc中的指標比較

繼承自NSObject的子類如果重寫了isEquals:方法, 應當提供 hash 這個屬性

不能在oc中繼承swift的class

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.