Windows转iOS开发一年总结

  • 起步
  • 逆向
  • 源码学习
  • 上线App
  • 文档
  • 博客文章
  • 工作内容总结
  • 下一步计划
  • 总结
  • 自去年(2015年)3月15日开始iOS开发以来,去掉中间3个月的全职奶爸(兼职O2O摄影创业)(5月10日至8月12日),到今天(2016年6月26日)已经1年多一点。

    去年11月份写过一篇 C++转iOS开发5个月总结 ,罗列了在接近5个月的时间内学习的知识,也做了一些计划。

    本篇文章就接着上篇继续。总结下最近6个月(去年12月至今天)的学习情况。

    起步

    去年11月底至12月初,折腾了好久终于把之前的一个想法实现了(使用flask+mongodb)。雪花书签 上线运行。但可惜,简单又麻烦、无体验,只是实现了半个情怀。后来网站关闭,改版进化为 番茄阅读钦慕设计导航

    了结了这个小情怀,就专心投入iOS学习中。

    逆向

    11月底开始,至12月底,几乎一个月的晚上时间(孩子一般11点才睡觉,我就折腾到一两点)用来学习《iOS应用逆向工程》这本书,最终年底产出一个 支付宝语音保存Tweak ,也写了开发笔记

    2014年我还在做类似360杀毒的安全软件,那时把《病毒分析实战》这本书仔细的边读边做了一遍,但没进一步学习,仅停留在了书中的例子和简单的分析上。由于工作仍然是以业务为主,客户上报了有问题的PE文件,汇编是我的弱势,更多是在金山火眼等其他工具中分析,自己并没有去仔细分析汇编代码。

    或许有这个基础,现在看iOS应用的逆向,且由于Objective C的动态机制,基础的逆向学习起来就比较容易。把这本书几乎所有例子逐个走了一遍。

    后来由于工作开发IM客户端的需要,逆向了微信等好多App的实现。其中微信消息界面的逆向也简单总结了下流程

    源码学习

    我有时有点折腾,为了学习源码还耗了大量宝贵业余时间写了个Xcode插件 XSourceNote。想法是好的,但使用起来体验并不是很好,仅能凑合用。用这个插件写了几篇源码阅读笔记。

    • UITableView-FDTemplateLayoutCell 学习笔记
    • YYCache 学习笔记
    • SDWebImage 学习笔记
    • YYWebImage学习笔记

    这里要反思下,学习的太少,插件完全没必要做。 耗费时间去做低优先级的事情,这个是需要反思的

    • iOS应用逆向工程
    • iOS应用安全攻防实战
    • Obscure Topics In Cocoa & Objective-C
    • CFHipster
    • iOS Core Animation Advanced Technique

    除了iOS相关的书籍,还买了《程序员的数学》三本书,第一本简单点,已经看完。二三本已经加入任务队列。

    了解了OpenCV。为了实现AR还原魔方。最终在segmentfault hackathon 2016 Beijing上做了个简单的魔方还原辅助的App。源码

    上线App

    从雪花书签到iOS博客精选,到现在的App《番茄阅读》,天真的想法的想要实现,总要经历这个过程。 实现了这个小梦想。有个自己上线的App。《番茄阅读》开发总结在这里

    文档

    很多博客文章不会系统的讲解某一知识,还是应该更多时间投入到看官方文档中。系统、全面的学习才是更有效的学习

    • CoreData Programming Guide
    • Thread Programming Guide
      • RunLoop detail
    • Concurrency Programming Guide
      • nsoperation
      • dispatch queue
      • dispatch sources
    • App Programming Guide
    • 等若干轻量级Guide

    博客文章

    随着日常工作,感觉不错的文章都收藏在了《番茄阅读》中,也放在了这个web地址

    工作内容总结

    想想自己来北京后的主要工作内容:

    • 持续集成
      • Jenkins + fastlane (gym sign and ruby script)
    • 崩溃收集与分析
    • 聊天室
      • NSAttributedString
    • IAP
    • IM
      • 消息存储
      • 消息队列
      • 消息展示
      • 图片预览
    • 直播
      • 礼物动画

    下一步计划

    优先级先后排列:

    • YYModel vs Mantle
      • 效率的区别为何这么大
    • Reactive Cocoa
      • 使用
      • 深入源码
    • 设计模式
      • AOP
    • 组件化
      • 组件化方案
    • AsyncDisplayKit
      • 异步UI
    • 性能
      • 学习 Instruments Guide
      • 翻译
    • 底层
      • class-dump源码学习,Mach-O文件格式学习,myclass-dump

    可穿插学习WWDC。完成以上计划应该会很快(当然看学习的细致程度),其他时间多学习各种开源repo。

    总结

    • 时间匆匆而过:半年的时间过得很快。时间总是不够用。
    • 优先级:优先级很重要,尤其是“知道的越多,不知道的越多”的时候。

    可以走的慢,但要按照优先级。不要总学新知识的入门资料,至少要在某一个方面继续学习。