- 基礎知識
-
swift 是strong type的面相對象語言。
和objective c比起來最大的差别是objective c是基于消息急着的,每個方法的調用都是向對象發送了一個消息。而且object c允許向空對象(nil)發送消息,相當于調用其它語言null object的方法;而這在其它語言裡面是不被允許的,會抛異常。 和比如c++ 相比最大的差别是,c++中通過指針來間接指向對象。而在swift中通過optional,而且optional的文法比較怪。
蘋果官網的這篇 swift tuor可以幫助你學習swift的基本文法。學會這些基本文法基本可以開始coding,遇到不會的可以google一下或者查 guide 和 reference
此外,對wrap/unwrap, implicit optional, optional chain 最好額外仔細學一下
轉化步驟
這篇文章中講到如何在swift 中調用objective c,或者如何在objective c中調用 swift。
我們最好隻在swift中調用objective c。因為我們的項目已經分層UI->BLL –>Data Access。是以我們可以逐層進行轉換。先把UI層的controller轉化成swift;然後把UI層的View轉換成swift;然後把BLL層轉換成swift;然後把Data Access層轉換成swift,最後把通用的Utility轉換成swift,最後再做優化代碼清理。
不需要在一個sprint中把工作全部做完,可以分到幾個sprint裡面。
常見問題
-
在轉換的過程為了提高速度可以用一下工具,網站把oc代碼自動轉換成swift再做修改;不過這些工具一般有bug,會有各種問題,需要手動修改。下面是幾個工具
https://objectivec2swift.com/#/converter/
https://iswift.org/try
- debug中比較容易遇到的問題是在oc中調用空指針的方法是允許的,但在swift中會出異常EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)