我的iOS开发之路《下》

我的iOS开发之路《下》

接上一篇把剩余的内容分析出来,主要涉及持续学习的一部分,进阶的辛酸和未来的计划。

Core Services Layer

这一层属于比较底层的知识了,也是非常重要的,个人感觉比media那一层更实用,主要涉及的内容有这些。

  1. Peer-to-Peer Services(Multipeer Connectivity Framework Reference
  2. iCloud Storage(iCloud Design Guide
    3.Block Objects(Blocks Programming Topics
  3. Data Protection(App Programming Guide for iOS
  4. File-Sharing Support(Information Property List Key Reference
  5. Grand Central Dispatch(Concurrency Programming Guide
  6. In-App Purchase(In-App Purchase Programming Guide
  7. SQLite(SQLite Software Library
  8. XML Support(documentation for libxml2

内容还是很多的,以上这些特性学了个大概,其实这一层涉及的Framework还是很重要的,主要有这些:
Accounts Framework,Address Book Framework,Ad Support Framework,CFNetwork Framework,CloudKit Framework,Core Data Framework,Core Foundation Framework,Core Location Framework,Core Media Framework,Core Motion Framework,Core Telephony Framework,EventKit Framework,HealthKit Framework,HomeKit Framework,JavaScript Core Framework,Mobile Core Services Framework,Multipeer Connectivity Framework,NewsstandKit Framework,PassKit Framework,Quick Look Framework,Safari Services Framework,Social Framework,StoreKit Framework,System Configuration Framework,WebKit Framework以及最重要的Foundation Framework。

写下来才发现自己还有很多内容都没涉及过,求学之路漫漫啊,并且这一层的Framework还是有一定的深度的。尤其需要掌握CFNetwork,Core Foundation,JavaScript Core,和Foundation。

Core OS Layer

这一层都是偏操作硬件的内容,基本没有涉及,这一层可能平时用的不多,但却构建了很多上一次的框架,为了完整性也列出来需要掌握的内容有哪些:

  1. Accelerate Framework(Accelerate Framework Reference
  2. Core Bluetooth Framework(Core Bluetooth Programming Guide
  3. External Accessory Framework(External Accessory Programming Topics
  4. Generic Security Services Framework
  5. Local Authentication Framework(Local Authentication Framework Reference
  6. Security Framework(Security Framework Reference
  7. System(iOS Manual Pages
  8. 64-Bit Support(64-Bit Transition Guide for Cocoa Touch

貌似只有7,8是用过了,还算比较熟悉,这些内容一般开发很少碰到,64位还是被强制了。。。希望以后的开发生涯中也不用再学了 = =。

在整个持续学习的过程中,加深了对iOS开发的理解,在这个期间也看了两本相关的书《Objective-C高级编程》和《Effective Objective-C 2.0》,还有就是为进阶做准备的一本书《黑客与画家》。

进阶的辛酸

说来惭愧,其实自己也只是一个入门没多久的菜鸟,不敢谈进阶的感想,只能说是看了很多人的分析,再结合自己的经验,写写进阶中的注意点吧。主要从三个维度来分析:

  • 纵向方面的深度学习
  • 宏观方面的架构思维
  • 管理方面的职业素养

底层基础

在我持续学习阶段,有些内容感觉很晦涩,看的不是太理解,有些内容,看完又很容易忘,然后就请教了一个大牛,那个大牛给我推荐了三本书:《深入理解计算机系统》,《数据结构与算法分析》,《TCP/IP详解》。说看完以后再回头去想一下之前学的内容,再看一遍之前学的内容,你会有不一样的体会。

然后就买了这三本书,然后就呵呵了,看的并不是很理解,没办法,拿出大学期间的课本,又重新啃了一遍。总算是有点入门了,然后在看了这三本书,有点感觉了。期间也做了很多笔记,反复的咀嚼,然后学完后和大神去相互验证,这个过程肯定是辛酸的,每次自以为学到了很多东西,在大神眼里其实都是非常基础的内容。但是这反而激发了我不服输的性格,每天学的更拼了,每天学到咳血在睡觉。。。

收获还是很多的,就拿这次面试过程中,很多问题都是这方面的,还有就是学了这些内容后,再学习其他方面的内容简单很多,而且很锻炼一个人的耐心,能否沉下心去学习,相信一定有收获的。

架构思路

这方面还是很薄弱的,毕竟经验不够,不过也大大小小的框架看过,基本思路都是一致的,无非就是分层,分功能,面向接口,抽象化。这方面的学习主要是参考了这几本书《设计模式》,《敏捷设计原则》和《代码大全》。选这几本书也是有原因的,自己在这方面实践的不多,希望能够站在前人的肩膀上,更快一步的理解框架级设计,架构思路。

在这里我要纠正两个误区:

  1. 客户端有架构
  2. 客户端无架构

这两点看似矛盾,但是侧重点不一样,之前经常听面试者说,负责XXX客户端架构,但是仔细一问呢,其实只是一些模块化的思想,称之为框架还差不多,谈不上架构。但是呢,客户端其实还是有架构的,不管是应用层,数据层或者是业务层架构,技术结构,比如说:

  • 你的app有容错设计么?(hotpatch,降级处理,开关)
  • 你的app有部署方案么?(监控平台,白名单机制)

当然还有很多,类似高可用性,成本,扩展性这些原则上的内容,基础业务下沉,完整业务流程的整合等问题,在这个过程就没有捷径可以走了,踩得坑多了,就有感悟了。

职业素养

这一章本来是不想说的,不过看到了很多恶心的现象,不得不说(竟然还有离职员工公然贩卖上家公司源码的奇葩事)。作为一个程序员,基本的职业素养是必须要有的,除此之外则是要有一颗对极致代码不断追求的心,甭管是命名规范也好,设计原则也好。

在这个阶段,我主要看了这两本书:《程序员修炼之道:从小工到专家》,《程序员职业素养》,都是我自认为很经典的书,一本是教你写好代码,一本是教你做好人。

当然等你牛逼了,自然而然的,你需要去学一些管理方面的姿势,不管是项目管理还是团队管理,那软件工程这一方面的书就必不可少了《人月神话》和《人件》都是不错的经典书籍。

之所以叫这个阶段是进阶的辛酸,就是因为我还远没有出师,还在这个阶段徜徉呢 = =。也希望在未来的4年能够突破这个阶段,回头再来看这些话时的感慨和好笑吧。

方向&目标

架构师(不仅仅局限于iOS)一直是我当程序员以来的梦想,今后也将为之不懈努力,要学的东西太多了,iOS深层次的内容,安卓,服务端,前端,数据库等等,相信未来看的书肯定还会有更多,最近打算买了两本关于Unix的书,学好服务端架构,再整合客户端,形成一个链,而不是独立的看待。

先给自己顶个短期目标:两个月内能够看懂同事写的安卓代码,并且能够debug。

在这里不得不吐槽一句,现在真的是很忙很忙!看书的时间明显减少了,只能挤出时间学习了,上班的路上,蹲坑的时候都可以想想问题,也许灵光就在那一瞬间,然后就掉下去了。。。

小尾巴

还有就是有幸能和大神们交流也是极好的,吹牛也有资本啊。然后说说大公司的优势吧,开阔眼界,身边牛人比较多,随时能问一些疑难杂症,规范化,以及流程繁琐!