iOS 开发总结

自从学习 iOS 开发以来,断断续续加起来也有 2 年时间了。最近离职,是时候做一下总结,梳理一下知识点。

iOS 开发最开始入门是 Stanford University Developing iOS 7 Apps,虽然是英语,但是最基本的概念也是那时候一点点学的。当然后来离职参加培训班,是进步最快速的一段时间,也培养了真正自学的能力。到后来参加 iOS 的工作,一直以来引以为好的就是自学能力。因为对于 iOS 开发来说:语音、设计模式、框架、文档、调试和测试等都已经掌握了,实际开发工作中,无非是一些实际的问题或者新的框架和系统特性,只要查询文档或者 Google 一下都能解决了。

框架

谈到 iOS 框架,必须是 MVC,工作以来的项目一直都是 MVC。足够简单的分层和经久验证的良好设计。对于其他的如:MVVM,只是了解,实际项目中未曾应用。比较简单的业务逻辑和团队人数少的情况下,MVC 足够好用。

语言

Objective-C 是入门语言,其语言复杂性足够新手望而却步,但是也就属性特性和方法调用比较难。后来工作中一直使用 Swift,才感觉到现代语言的简单和强大。尤其是 Swift 多范式,支持函数式编程,尤为方便。由于对 Swift 的偏爱,我也逐渐把第三方库都替换成了 Swift 对应的版本。Cocoapods 对于 Framework 的支持也比较好, 添加use_frameworks!,即可调用 Objective-C 的库也很 Swifty。

设计模式

Delegate、通知、KVO、Target-Action、Block(Closure)、工厂方法、单例等就不一一介绍,更具实际需求选择合适且喜欢的就行。特别推荐这篇文章: 消息传递机制

Cocoa Touch

iOS 渲染层次树、view、layer、响应链、Core Animation、自定义 view、常见 UIKit 的控件的继承关系,tableview、collectionview 等都应该熟练使用。

学习资源

微博、Twitter、博客、书、视频教程都是很好的。列几个对我影响比较的:

常用库

这里是最为推荐的几个库:


pod 'SwiftyJSON'
pod 'SnapKit'
pod 'IGListKit'
pod 'Kanna'
pod 'URLNavigator'
pod 'MXSegmentedPager'
pod 'QMUIKit'
pod 'IBAnimatable'
pod 'Ruler'
pod 'DZNEmptyDataSet'
pod 'CYLTabBarController'
pod 'FDFullscreenPopGesture'
pod 'MJRefresh'
pod 'SwiftyUserDefaults'
pod 'YYKit'

# Test tools
pod 'MLeaksFinder'
pod 'FLEX', '~> 2.0', :configurations => ['Debug']
pod 'Reveal-SDK', '~> 4.0', :configurations => ['Debug']