OC: 1. 简单。语法层面 OC 比 Swift 简单太多了。如果有类 C 语言的基础,很快就能上手。有本黄皮书叫 Objective-C 编程,这本书对 OC 讲的非常好,基本上囊括了所有特性(不知道有没有数组字典字面量,nullable 等特性,很多年前的书了)。你一天就能学完。 2. 没有兼容性问题,网上教程上的代码拿来就能运行。 3. 由于提供了非常丰富的运行时 API,你可以控制的东西非常多,有很强的代码控制力,这点在 Swift 上要弱化不少。
Swift: 1. 语法特性非常多,非常现代的语言。学习周期会比 OC 长。有时候还能遇到编译器 bug,有时候代码自动提示会失效等等,新手能把你折腾半死。 2. 有兼容性问题,ABI 还没达到稳定。每个版本更新都会带来语法变化,虽然变化越来越少了,但以前有很多是 Swift 写的,最新的 Xcode 已经不支持,你运行起来会有困难。但现在最新的教程基本上都是 Swift 写的,你学 OC 看着也可能有点吃力。 3. 服务端可以干爆 OC,由于 Swift 开源、跨平台等特性的存在,自然就出现了 Server Side Swift,你可以用 Swift 开发服务端程序,并且性能很好,这一点在 OC 上很难得到应用和发展。
总的来说,你要掌握的是 iOS 的 API,语言语法层面只是小问题。你不可能只学一个,早晚都要学另一个。只要你掌握了 API 之后,学另一个跟玩儿似的。所以你直接挑一个你喜欢的学就好了。但是记住要用代码构建 UI,少用或不用 Story Board,Xib。