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的控件的继承关系,table view、collection view等都应该熟练使用。

学习资源

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

常用库

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

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']