阅读 560

iOS Objective C开发怎么入门?

入门呢,先多了解下iOS开发的知识树。树上有什么大枝大叶,心里有个数最好啦。平时多看看书,多和前辈讨论技术,就get很多经验的。选对了位置,再逐步突破不懂的点,之后开始研究一些有深度的领域,一万小时定理你懂的。

首先推荐一些进阶的书籍(不好意思哈,看的不多。):

1.《Objective-C基础教程》

2.《Objective-C编程之道:iOS设计模式解析》

3.《Objective-C高级编程(iOS与OSX多线程和内存管理)》

4.《EffectiveObjective-C》 [机械工业出版社 Effective系列丛书]

5.《iPhone开发秘籍》Erica Sadun著

[注:以上除Effective那本之外,4本都是人民邮电出版社 图灵丛书系列的]

接着,我再大概罗列下一些技术划分哈。

初级阶段:

就Objective-C而言:

1.Foundation框架、Catagory、KVC、KVO、Protocol、Block、引用计数等基本知识有有所掌握。

2.注意代码规范。

iOS开发的通用控件而言:

1.UIView方面相关控件(UILabel、UIImageView、UIButton、UISlider、UISwitch、UIScrollView(TableView、CollectionView、TextView)、UIWebView、UIWindow、UINavigationBar、UITabBar)。

2.了解UIViewController的生命周期,Navigation的堆栈原理等等。

3.千万别只用代码写UI或是仅使用Storyboard,把Xib、storyborad搞搞清楚,特别是AutoLayout用好来也很重要,此处补充推荐:Masonry Framework,算是约束方面的语法糖。

4.NSNotifaication、观察者、代理,都是全局代码事件的必要手段,活用巧用可以进一步解耦代码。

5.手势。UITapGestureRecognizer、UIPanGestureRecognizer、UILongPressGestureRecognizer、UISwipeGestureRecognizer、UIRotationGestureRecognizer。

6.屏幕的旋转,不多赘述,这个坑要多走走才过的好。

7.原声导航地图相关开发,此处不才推荐本人的一篇文章:http://www.jianshu.com/p/72652a93741d

8.文件管理,Bundle、NSFileManager。

9.数据存储,UserDefault,KeyChain、NSKeyedArchiver。

10.ARC(工作一年的人最容易背面试的方向,还望反复揣摩。)

iOS动画:

1.UIView动画封装,此处敲黑板UIAnimation,如果有空,可以看看Lottie,可以支持很多更炫的动画效果。不过前提是你们公司有AE设计师。

2.Controller 相关的TransitionStyle

3.CAlayer,此处应当敲黑板,因为这部分有很多知识点,面试能够在UI方向上答到,可以加分。

设计模式:

这部分内容研究,建议拿一些开源企业级框架进行学习。本人当时是哪BeeFramework上手,Bee框架算是很好的MVC模式学习框架了。XML UI + Signal的View构建方式也挺优秀的。不过可惜的是现在Bee已经不再维护了,所以就拿来学习吧。(另外备注:很多公司也推行MVVM模式代表ReactiveCocoa,建议找工作的小伙子们可以看看。)

需要了解的常用设计模式:

1.MVC

2.代理模式

3.单例

4.观察者

5.工厂模式

单元测试:

1.单元测试基础原理

2.XCTest

3.Kiwi(此处应当有敲黑板,Kiwi是BDD(行为驱动测试)测试方案。)

开发技术之外的还包括:

1.项目版本管理:SVN、Git (Git的GUI,Mac上推荐Tower)

2.项目包依赖管理:CocoaPods(OC)、SwiftPackage Manager(Swift)

3.调试各种小技巧。比如断点(条件、全局)、lldb调试基本指令、NSZombieEnabled、

4.一些基本概念的理解,比如进程、线程、同步、异步、队列、串行、并发。

中级阶段。

在这个阶段呢,我们应该更多关注性能和业务方面的优化。

开发语言方面:

1.Swift:Objective-C与Swift互调。

2.JavaScript:使用Objective-C执行JavaScript。可以多熟悉了解JavaScriptCore。三方框架方面推荐WebViewjavaScriptBridge。

3.C、C++、Objective-C混编。

iOS方面:

1.动画上熟悉CAAnimation(CABasicAnimation、CAKeyFrameAnimation、CAAnimationgroup\CATransition)、UIDynamics(UIDynamicAnimator、UIDynamicBehavior)

2.Runtime:objc_msgSend、Method Swizzling;

3.正则表达式:NSpredicate、NSRegularExpression。

4.消息推送机制

5.组件开发:创建Framework、打包静态库

6.分清32位和64位编译区别,能够将32位程序迁移到64位(这部分,,,,不强求)。

多媒体:

VLC组件使用频率较高,但其中部分不需要的解码库可以适当的剥除以降低库大小,SDWebImage可以细致的去研究他的加载策略缓存策略。CoreAudio、COreGraphics能够调度硬件进行编解码,提升效率多半是Android一时半会达不到的。

1.视频:MediaPlayer、AVPlayer、VLCPlayer、AVFoundation

2.图片:CoreGraphics、SDWebImage、CoreImage

3.音频:CoreAudio

4.应用外重要的图像处理框架:GPUImage,你如果想进个眼下很火的拍照、短视频相关开发的公司,建议深入研究这个开源库。此处推荐我的Git仓库:https://github.com/filelife

网络交互:

此处应该毋庸置疑推荐研究AFNetworking(2.0、3.0)两个版本,先会用,之后开始学着封装抽象。

1.NSStream

2.NSURLconnection

3.NSURLSession

4.Json解析(model数据接收导致崩溃,多半在Json解析。)

应用测试:

还在为应用莫名其妙卡壳而苦恼吗,还在为找不到项目优化点而被产品同批吗?Instrument——你值得拥有。

1.性能测试:instrument(Timer、Allocation、Leak)

2.Fabric :上线应用的崩溃、用户操作采集统计平台。一般,你一个人开发,,用不到这个,你就蛮看看吧。

开发环境与工程框架(个人觉得也是中后期关注比较多的点)

工程框架

1.包依赖管理:Cocoapods、SwiftPackageManager、Carthage。如果你为了添加一个依赖库,还在手动从Git上面下载,那么就该注意去使用这些包管理工具了。提高效率很多,并且方便团队开发时,快速构建项目框架。(注:如果你是从ObjectiveC入手,那么推荐你自己尝试推一个Podspec,完成自己的第一个远端Cocoapods仓库。)

2.持续集成:Jenkins。首先,你先发现了自己在开发过程中对于持续集成的需求,并且发现真的很累...那么此时你就该认真的思考如何通过工具完成这一烦躁的工作了。

3.数据安全:

3.1数据加密:Hash(MD5、SHA1、SHA265)、RSA、AES、3DES、Base63.

3.2HTTPS与SSL:做开发,必须要学会跳过HTTPS授权,iOS也不例外。

4.打包工具:Jenkins、Command Line Tools、Xctool

5.用户行为监控,崩溃日志手机:Fabric、Umeng

开发环境

1.git:SourceTree、Tower(强烈推荐Tower,速度比ST快多了。)

2.SVN:Versions、Cornerstone。(讲真Versions比Cornerstone好用。)

3.开发者账号申请和管理:

3.1Apple Developer MemberCenter :证书(发布证书、开发证书、推送证书)、设备管理、配置文件管理(不差钱就花99刀买一个开发者账号吧)

3.2iTurnes Connect:Appstore应用管理、应用上架审核检测、加急审核。

5.热门技术:

5.1支付:微信支付、支付宝支付

5.2分享:微博、微信朋友圈等

5.3即时通讯:XMPP、VoIP(不知道放这里合不合适哈,做过视频会议,网络电话的人都懂。)

5.4混合应用开发:ReactNative,此处建议在完成OC学习之后进行,部分公司有需求。

以上列出的大部分内容来自于日常开发,还有书本阅读,也有部分的内容来自于平时和前辈讨(xia)论(che)时谈到的一些技术点,都会仓鼠心态的将其收入笔记中,闲暇时候整理成知识点再逐个学习了解。

个人比较相信一万小时原则,多码新鲜的代码多半不会错的,但学习的同时也多调整方向。