Android與Swift iOS開發:語言與框架對比
Swift是現在Apple主推的語言,2014年新推出的語言,比Scala等「新」語言還要年輕10歲。2015年秋已經開源。目前在linux上可用,最近已經支持Android NDK;在樹莓派上有SwiftyGPIO庫,可以通過GPIO控制一些硬體。 Object C is old and ugly,oc是1983年蘋果推出的,過於陳舊和臃腫。
Swift語法類似Scala,Javascript ES6, Java,OC, C++, Python
Swift的switch 語法和Java及C++很像,但是它沒有break,他命中一個case後會自動退出switch。對於幾個不同case同樣處理的情況,可以case後面連續幾個condition,用逗號隔開。
for循環和Java也基本一樣,不過也是不需要括號。for循環中,..<的用法比較方便。下劃線符號_(替代循環中的變量)能夠忽略具體的值,並且不提供循環遍歷時對值的訪問。for-in則有點類似與Java中for each循環。
Swift 2.2中try catch和do while和java差異很大。
Java vs. Swift語法比較 基礎語法
Swift的switch 語法和Java及C++很像,但是它沒有break,他命中一個case後會自動退出switch。對於幾個不同case同樣處理的情況,可以case後面連續幾個condition,用逗號隔開。
for循環和Java也基本一樣,不過也是不需要括號。for循環中,..<的用法比較方便。下劃線符號_(替代循環中的變量)能夠忽略具體的值,並且不提供循環遍歷時對值的訪問。for-in則有點類似與Java中for each循環。
Swift 2.2中try catch和do while和java差異很大。
Swift開發推薦使用struct,而不是class。Swift語言實現包括幾百個struct,只有幾個class。
Swift類構造方法是init,析構方法是deinit,類方法調用跟Java基本一樣。
self相當於Java中的this,傳入生命周期不一致的閉包時需要聲明為weak。 Enum枚舉Android開發谷歌官方不建議使用Enum,影響性能。
Swift的Enum和Java類似,本質是一個類,裡面可以包含函數。
Swift Enum語法更簡單。
Swift Enum支持擴展extension。 Interface vs. Protocol
Extension擴展就是向一個已有的類、結構體或枚舉類型添加新功能(functionality)。這包括在沒有權限獲取原始原始碼的情況下擴展類型的能力(即逆向建模)。擴展和 Objective-C 中的分類(categories)類似。
Swift 中的擴展可以:
添加計算型屬性和計算靜態屬性
定義實例方法和類型方法
提供新的構造器
定義下標
定義和使用新的嵌套類型
使一個已有類型符合某個接口
Swift 中的擴展很強大,struct class enum都可以,也可以擴展系統的類。需要注意的是擴展方法的作用域問題,這裡不展開討論。