新人求教, ios 入门语言选择 Swift 还是 object-c

2019-02-26 11:03:53 +08:00
 TanLeDeDaNong

苹果官方推广 swift 但据说大公司好像还在用 object-c, 是吗?

4711 次点击
所在节点    iOS
9 条回复
Vancion
2019-02-26 11:06:28 +08:00
国内 ObjC,国外 Swift。
找工作 ObjC,自己写着玩 Swift
TanLeDeDaNong
2019-02-26 11:08:06 +08:00
@Vancion 感谢
finab
2019-02-26 11:19:50 +08:00
学这两个其实没什么区别,个人建议学 Swift,语法对新手友好。

熟练后你最多再花一周就能写 ObjC 的代码了,先学 ObjC 转 Swift 也差不多。(参考我当初 ObjC 转 Swift,是第 0 天直接上手写项目)

学 iOS 开发是学 UIkit 那些东西, 两种语言都是一样的,往浅里来讲只有语法差异(并不是)


学 iOS 开发最最最关键的一点就是多动手写项目解决实际问题, 选什么语言真的无所谓,反正到最后你都会。
TanLeDeDaNong
2019-02-26 11:22:34 +08:00
@finab 多谢指教
chipmuck
2019-02-26 14:03:43 +08:00
拿一个我之前的回答,你可以参考一下。

0. 从语言的 logo 谈起。

看看可怜的 Objective-C 发布和修订那么多年了,至今也没有一个像样的 logo 来跟 Swift 这个正统的「官方续作」相提并论(当然这纯属是一个笑话)。所以,我们是不是可以仅从设计良好的「商标」的角度来决定该学习哪一个?(当然这同样是一个玩笑)

1. 现在?

学习客户端语言,讲个套路无非就是语法、设计模式、UI 和项目实例。咱一个个来说,首先语法。无人不知无人不晓,Objective-C 继承自 Smalltalk 的语法,其中的消息发送(也就是方法调用)类似自然语言的叙述方式:长,但清晰明确。很多刚接触 Objective-C 的开发者只是简单地认为,长名称即是冗余、繁复,但细看官方提供的代码样例,其实可以轻易地从中读出某个代码片段或者方法名所代表的含义和作用,甚至在定义方法名称时,你可以跟造句一样,按照句型结构来划分名称结构,反而有种浪漫融入于代码之中。这个例子并不是说 Swift 难以理解,相反,按照 Apple 的宣传文案,Swift 是「人人能编程」活动中极为重要的工具,显然不会设计成一条陡峭的学习曲线,让初学者难以琢磨。恰恰我认为 Swift 这个「包罗万象」的设计结构(优化常见的编译错误、枚举中包含类定义、扩展、泛型等),往往在编程的时候会忽略一些在用 Objective-C 写时经常涉及到的一些问题,比如判空、类型判断等( Swift 对应为 Optional 和 as 语法),少了一些语言的特色也就少了一根技能树的枝叉。

面试呢?目前除了个别公司在 JD 中会标明 Swift 为核心招聘技能以外,绝大多数还是以 Objective-C 为主。

2. 未来

TIOBE 的语言趋势排行准不准?我觉得一定程度上,能反映出当下某种语言或者说某种平台的社区热度,但并不能预知未来的发展趋势。如果按照「众望所归式」的故事走向,Swift 定会一统江湖。但如果不是,看看现在的 Flutter、React Native 等一众跨平台,无论从文档质量、编程环境、社区扶持,都有赶超之势。扯远了,如果从问题的两者挑一个,可预计的未来,还是 Swift 的。

3. 所以,建议?

如果想体验几年前「麻烦」的 MRC 和「顽劣」及不明所以的 Bug,并试着习惯、解决它们,最终积攒经验成为一位大佬,那么就从 Objective-C 学起;

如果为了公司的业务,为了完成手上的任务,最终成为技术部中广为传颂的「 fix 大神」,那么就根据公司项目使用的语言学起;

如果想自己创造一个世界,创造一个属于自己或者服务于社区的东西,那么想必 Swift 是最好的选择。
donnior
2019-02-26 14:07:56 +08:00
非工作
我能说我 OC 转 RN 了么? ^_^
vHypnos
2019-02-27 10:07:37 +08:00
@donnior #6 现在应该是 flutter 的浪潮了吧
qfdk
2019-02-28 04:53:18 +08:00
@vHypnos 同意
diyisoft
2019-02-28 08:21:39 +08:00
@finab 大佬的 V2EX 开源客户端很棒,谢谢。现在正在用这款 app 回这条消息,app 代码也很棒。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/538779

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX