iOS Objective C开发怎么入门?

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

首先推荐一些进阶的书籍(很差意思哈,看的很少。):git

1.《Objective-C基础教程》github

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(MD五、SHA一、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)时谈到的一些技术点,都会仓鼠心态的将其收入笔记中,闲暇时候整理成知识点再逐个学习了解。

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

相关文章
相关标签/搜索