本想看完文档再写的,不过看到排名靠前的答案有些偏激(你们不就是想找个理由不学嘛),还是先写些看法吧。

首先,它不是一门玩具语言。
去看看它的文档就明白了,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。

其次,一些被指出的缺点其实并不存在,或者并不严重:

  • 数据结构少?还有原生的 tuple 和 enumeration 没提到,此外还能用 Objective-C 的 NSSet,至少总量上比 Objective-C 多了几种。
  • 没有多线程?可以用 GCD 的 API,也被移植到 Swift 了。
  • 没有私有属性?很多语言都没有,都靠使用者自觉。
  • 只能与 Objective-C 互动?C 也是可以的。
  • 没有异常处理?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 算不上一门很好的语言。

— 完 —

本文作者:孙竟

【知乎日报】
你都看到这啦,快来点我嘛 Σ(▼□▼メ)

此问题还有 35 个回答,查看全部。
延伸阅读:
学习编程语言最好的方法是什么呢?
为什么说指针是 C 语言的精髓?

分享到