知乎程序員:Swift語言是個很好的Objective-C替代者

知乎程序員:Swift語言是個很好的Objective-C替代者

本文是知乎程序員“孫竟同學的看法,作者提到:首先,它不是一門玩具語言,其次,一些被指出的缺點其實並不存在,或者並不嚴重,此外,對於想轉行做 iOS 或 OS X 的開發者來說,Swift 是個很好的 Objective-C 替代者。

【首先,它不是一門玩具語言】

去看看它的文檔明白了,feature 非常豐富(我敢保證你們在半天內是看不完的)。再看它的庫,Apple 把 Cocoa 的 API 都用 Swift 寫了個封裝,而不是完全一致的。

下面是文檔裡的例子

Objective-C:

UITableView *myTableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];

Swift:

let myTableView: UITableView = UITableView(frame: CGRectZero, style: .Grouped)

所有參數都重寫了有沒有?如果不是想取代 Objective-C,幹嘛還去重寫,你直接用那冗長的參數不就完了?不過現階段底層仍然調用的是 Objective-C 的 API,而不是直接用 Swift。

【其次,一些被指出的缺點其實並不存在,或者並不嚴重】

1、數據結構少?還有原生的 tuple 和 enumeration 沒提到,此外還能用 Objective-C 的 NSSet,至少總量上比 Objective-C 多了幾種。

2、沒有多線程?可以用 GCD 的 API,也被移植到 Swift 了。

3、沒有私有屬性?很多語言都沒有,都靠使用者自覺。

4、只能與 Objective-C 互動?C 也是可以的。

5、沒有異常處理?Objective-C 裡基本也不用。

補充一個缺點:不支持複雜的宏,只支持 #define。很顯然,這些缺點對很多開發者 / 團隊來說不算大問題

【此外,對於想轉行做 iOS 或 OS X 的開發者來說,Swift 是個很好的 Objective-C 替代者】

這裡沒空一一列舉 Swift 的優點了,文檔裡可以找出很多。簡單來說,Objective-C 只會更坑。蘋果也說 Swift 是「A complete replacement for both the C and Objective-C languages.」甚至你用 XCode 6 新建一個項目,在選擇語言時,Swift 也排在 Objective-C 上面。最後,如果不是做 iOS 或 OS X 開發,Swift 算不上一門很好的語言。