iOS 学习之旅 - OC 篇

不知不觉来微信事业群差不多也快一年了,自己学习 iOS 也已有半年,在此记录一下自己的学习过程。很多同学可能想知道从 Android 转到 iOS 公司给了多久的缓冲?大概是一周的样子,那时我还在做 Android 首次拉取消息列表优化的需求,领导突然跟我说我们 iOS 缺人你要不转到 iOS 开发去?当时叫了我和另外一个刚毕业的同学,另一个同学说考虑几天(后来没转),我挺乐意所以当时就说转了。我开始一边做 Android 的需求一边学习 OC 基础,一周后接了两个小需求(不是很难),我们主要是用的 OC 语言,很多同学新项目可能用的是 swift 我目前还没学,因为移动端大部分逻辑都在底层,由于之前写过一点点 C 和 C++ ,所以总的回顾起来压力不算太大。之所以当时非常想转 iOS 主要是想锻炼一下自己,就像去年总结的时候我说:我们不可能只干一个岗位,也不太可能在一家公司干掉退休,当然如果你来腾讯或许可以干到退休,随着年龄的增长我们都不太喜欢变化,希望一直保持现在这样挺好。其实处在任何环境做任何事都是差不多的,好比我在来微信前写的总结文章里说的一样,不在于我们做什么工作,而在于我们做事的方法和套路以及做事的态度。 目前来看我只说对了一半,没想到今年大量裁员,所以以前我时常提醒大家我讲的东西不一定对,大家要自己加以思考。现在我想说的是我讲的东西都是错的。

今年的情况我们也都看到了,各大互联网企业都在降本增效,我们也能从中反思到很多东西。今年我们组也明确说了不裁员但是目前不再新增 HC,我的上个部门,之前的同学说要裁掉 70%(500人留下150人)往后还不知道有没有新动作。很多同学都跟我发了一些消息,这其中还有很多是我当初推荐进来的同学,对此我心里万分抱歉也很难受,如果当初不推荐你过来今天就不会是这种局面,但是人生又没有如果。我在公司 KM 和脉脉上看到了很多不好的言论,有些是怪公司的也有些是怪大环境的等等。因此我觉得有时候技术只是一个方面,更重要其实还是在于修心,不同的心境面对事物会有不一样的感受。Android 的效能优化我们还没讲完,后面我打算每次课都拿 15 分钟的时间,跟大家来分享一些我以前读过的课外书籍。用苏东坡的一首词送给大家:莫听穿林打叶声,何妨吟啸且徐行。竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。料峭春风吹酒醒,微冷,山头斜照却相迎。回首向来萧瑟处,归去,也无风雨也无晴。 这首词,写于苏轼人生的灰暗时刻,希望同学们日后无论遇到何种人情事变,都能随缘尽性,达观豁达,拥有“一蓑烟雨任平生”的自在从容。

对于整个 iOS 开发我目前只学到了一点点皮毛,当然我也有自己的一套学习计划(类似 Android 进阶之旅),只是目前这形式抽不出太多的时间来学习。已经学完的有些感悟的当属对 OC 的底层原理研究:

  • OC 的历史和本质
  • 了解汇编指令与 LLDB 命令
  • 对象的创建过程、类的本质、元类以及 isa 指针
  • 方法的本质以及方法的查找与转发过程
  • App 启动 Class 与 Category 的装载过程
  • block 的本质探究
  • KVO 与 KVC 的底层原理
  • 多线程与 GCD 的原理
  • OC 的内存管理

内容看起来并不是很多,但是需要一些前提准备工作,我们主要是熟悉两个源码,一个是 objc 的源码一个是 llvm 的源码。关于 objc 的源码配置我这里提供一个 github 仓库大家自己下载就好了,如果大家自己去官网下载配置相当麻烦。我们还需要了解编译与汇编的一些简单知识,这里我们只需要了解一些简单的指令就可以了,因为苹果只开源了部分代码,有些内容我们只能去看汇编,还有比如 OC 方法的执行过程中有部分代码就是汇编写的。后面我会陆续的完成这些文章,关于《 Android 的效能优化》看今年能不能再次启动。目前又做了 iOS 开发,讲起 Android 内容来应该会更有感悟一些,所以我们都不要太急,希望把最好的东西分享给大家。

作者:红橙Darren

%s 个评论

要回复文章请先登录注册