最近找到了一份iOS开发的正式工做,因此想把本身学习iOS开发过程当中的经验和心得写出来,但愿可以帮助那些努力但迷茫的初学者。html
2015年1月,我开始开发个人第一个iOS应用,这款APP从第一行代码到苹果App Store上架用了大概两个月的时间,但总的时间跨度有接近4个月(春节期间停滞了一个多月,等待苹果审核10天)。APP上架后,我就开始投简历,并拿着个人APP去面试,很幸运地拿到了几个还不错的Offer,而后就挑了一个去上班了。面试
下面就是我自学iOS开发的一些经验和心得。算法
这些是作iOS开发必需要有的,并且是一大笔钱,但不要怕花钱,由于这些都是值得的。若是可以学有所成,一两个月的工资基本就回本了。就当是本身交的一笔“培训费”吧。数据库
若是你和我同样是零基础转行iOS,那么必定要有破釜沉舟的勇气和决心,并作好打持久战的心理准备。若是畏手畏脚、瞻前顾后,我劝你仍是想好了再来,省得浪费时间和金钱。我当初收入很低,是拿了3个月的工资买的Macbook,还每天担忧丢了或者弄坏;后来学习到小有所成时毅然选择了裸辞,孤身一人来到陌生的上海,通过2个月的待业状态才找到工做。这一路走来都承受着巨大的精神压力和物质压力。编程
若是你是彻底的零基础,我建议先要对编程有个基本的认识。建议从C语言入手,由于C语言比较简洁易上手,而且和Objective-C很类似。设计模式
当对C语言有个大体的了解后,就能够开始学习Objective-C了。微信
《Objective-C程序设计(第6版)》数据结构
注:这两本内容都差很少,但《Objective-C基础教程》写的更好、更经典,建议以这本为重点精读。可是这本写的比较笼统,难度稍高,因此若是遇到不懂的地方就看看《Objective-C程序设计》,这一本写的简单、详细一些。多线程
面向对象编程的基础知识。包括:面向对象与面向过程的区别、为何要面向对象编程,类、对象、继承、方法、属性、接口等概念的理解与使用。
Foundation框架。主要是NSString类、NSArray类、NSDictionary类、NSNumber类、NSRange类的熟练运用。
内存管理MRC、ARC的原理,委托delegate、协议protocol、类别category、块block的理解与使用。
有了Objective-C基础,就能够开始边看公开课边作APP了(我的以为没有OC基础直接看这个会很吃力)。能够加我微信17512010526
苹果官方有个作iOS应用的教程——《立刻着手开发iOS应用程序(Start
Developing iOS Apps Today)》。强烈建议以这个Demo做为你的第一个iOS应用,由于这个教程能让你对一个iOS应用的搭建有个很是全面、细致的认识。完成了这个Demo后,就能够结合斯坦福公开课学到的东西建立属于你本身的APP了。
2)UIKit的各类控件。特别是UITableView和UICollectionView必定要掌握,由于大部分的iOS应用都是由这两种视图搭建,吃透了它们那可玩的花样就不少了,其乐无穷。
导航控制器UINavigationController和选项卡控制器UITabBarController。同上,这两个控制器也是绝大多数iOS应用UI框架的根基,也是多个MVC协同工做的最典型例子。
场景切换的实现——Segue。熟练使用Segue很重要,由于一个应用通常都是各个界面轮流出现的,两个界面之间怎样实现跳转、怎样将一个界面的数据传递到下个界面,这都是实际开发中会遇到的问题。
Storyboard和AutoLayout的使用。这二者是一个应用的UI界面设计不可或缺的部分。
其它iOS高级编程。包括:数据存取CoreData/SQLite、多线程GCD、绘图CoreGraphics、动画CoreAnimation、网络编程、手势Gesture、多媒体AVFoundation等等,这些内容均可以实际用到时再深刻学习。
第三方库的使用。参考:GitHub 上都有哪些值得关注学习的 iOS 开源项目? - 编程
学习编程,必定要勤于动手,看再多的书、再多的视频,若是不动手敲代码都是白搭。哪怕书上和视频上的代码你一行都看不懂,也要亲手把代码敲一遍、把Demo亲自实现一遍,这很重要。编程是手敲会的,不是眼睛看会的。
学习iOS开发的过程当中,有遇到不懂是正常的,别惧怕不懂,Cocoa的内容细节原本就多,每一年的WWDC还会发布一些新技术。因此遇到不懂的知识必定要学会查苹果官方API文档:iOS Dev Center
作APP时,若是一个地方不会实现,或者遇到解决不了的问题,必定要学会使用Google搜索。通常来讲,初学iOS遇到的问题,Stack Overflow上都有相似的提问,基本一搜一个准。
此外,CSDN等一些技术博客上的文章也颇有参考价值。同时,加群交流学习也是一个很不错的选择,在这里我推荐一个群能够先加我好友:17512010526
若是你能按照以上所述作出一个APP上架并找到工做,那也基本算是入门了。但这并非终点,这只是一个新的起点。iOS开发,乃至整个计算机/互联网行业,后面的路还很漫长。苹果的整个Cocoa框架,可谓是博大精深,里面能够深挖的东西太多了;并且一个程序、一段代码能够进行的优化是没有止境的。做为开发者,只会一门语言是不够的,网络编程、数据库、算法、设计、交互等等东西都是须要掌握的,而语言只是实现这些的工具,语言实际上是最简单的。
此外,若是你和我同样是非科班出身,还须要把计算机基础课程补回来,即:数据结构、算法、操做系统、数据库、计算机网络、编译原理等。由于这些知识是你的“内功”,这些基础直接决定了你在这个领域的天花板所在的位置。
固然,基础差一点也问题不大,最重要的是你对计算机、互联网的热爱和热情。你须要有很强的自学能力,不断地去学习新知识,才不会被这个突飞猛进的行业淘汰;你须要保持一颗好奇心,不断地尝试和接受新事物,不断地创新,守旧的人在这个行业没法生存。在我找工做的过程当中,那些知名的大公司都是直接在简历关就将我刷掉了,而那些给我Offer的公司,无一例外都表示,之因此选择我是由于欣赏的个人热情、看重个人自学能力。
因此,若是你和我同样对iOS开发充满热情,勇于接受挑战,那么就从如今开始努力吧,我在前方的路上等你!
给你们推荐一个优秀的iOS交流平台,平台里的伙伴们都是很是优秀的iOS开发人员,咱们专一于技术的分享与技巧的交流,你们能够在平台上讨论技术,交流学习。欢迎你们的加入(想要进入的可加小编微信)。 17512010526
连接:www.jianshu.com/p/89c4da115…来源:简书