我是题主,感谢各位答主的答案,感谢各位知友的鼓励,时隔半年,我已成功转行互联网,今天我就自己来回答一下这个问题。
最近我找到了一份iOS开发的正式工作,所以想把自己学习iOS开发的经验和心得写出来,希望能够帮到那些努力但迷茫的初学者。
首先介绍一下自己的背景,我大学学的是机械专业,与计算机有关的课程只有一门C语言。
在接触iOS开发之前,我已经在一家机械制造公司工作一年多,工作内容与计算机毫无关系,所以我属于零基础转行。
年10月,出于对机械行业的失望和对互联网行业的浓厚兴趣,我萌发了转行的念头。
于是开始利用下班时间自学计算机知识(Java、Python、数据结构与算法)。学了大概两个月,基本的东西有了大致的了解,但是感觉要熟练掌握还任重道远。由于时间的原因,我就将重心转移到iOS开发上面。
年1月,我开始开发我的第一个iOS应用,这款APP从第一行代码到苹果AppStore上架用了大概两个月的时间,但总的时间跨度有接近4个月(春节期间停滞了一个多月,等待苹果审核10天)。
APP上架后,我即开始投简历,并拿着我的APP去面试,很幸运地拿到了几个还不错的Offer,然后挑了一个去上班了。
下面就是我自学iOS开发的一些经验和心得。
一、准备工作
1.Mac、iOS设备、开发者账号
这些是做iOS开发必须要有的,而且是一大笔钱,但不要怕花钱,因为这些都是值得的。如果能够学有所成,一两个月的工资基本可以回本,就当是自己交的一笔“培训费”吧。
2.心态上的准备
如果你和我一样是零基础转行iOS,那么一定要有破釜沉舟的勇气和决心,并做好打持久战的心理准备。如果畏手畏脚、瞻前顾后,我劝你还是想好了再来,免得浪费时间和金钱。
我当初收入很低,拿了3个月的工资买的Macbook,天天担心丢了、坏了。学习到小有所成时毅然决定裸辞,孤身一人来到陌生的上海,经过2个月的待业状态才找到工作。这一路走来都承受着巨大的精神压力和物质压力。
二、学习路线
1.对编程的基本认识
如果你是完全的零基础,我建议先要对编程有个基本的认识。建议从C语言入手,因为C语言比较简洁易上手,并且和Objective-C很相似。
2.Objective-C语言学习
当对C语言有个大致的了解后,就可以开始学习Objective-C了。
推荐书籍:《Objective-C基础教程》《Objective-C程序设计》
注:
这两本内容差不多,但《Objective-C基础教程》更好、更经典,建议以这本为重点精读。只是这本比较笼统,难度稍高,所以如果遇到不懂的地方就看看《Objective-C程序设计》,这一本简单、详细一些。
需要掌握并熟练运用的地方:
a.面向对象编程的基础知识。包括:面向对象与面向过程的区别、为什么要面向对象编程,类、对象、继承、方法、属性、接口等概念的理解与使用。b.Foundation框架。主要是NSString类、NSArray类、NSDictionary类、NSNumber类、NSRange类的熟练运用。c.内存管理MRC、ARC的原理,委托delegate、协议protocol、类别category、块block的理解与使用。
3.iOSSDK/CocoaTouch学习
有了Objective-C基础,就可以开始边看斯坦福公开课边做APP了(个人觉得没有OC基础直接看这个会很吃力)。
第一个iOS应用:
苹果官方有个做iOS应用的教程——《马上着手开发iOS应用程序(StartDevelopingiOSAppsToday)》。
强烈建议以此Demo作为你的第一个iOS应用,因为该教程能让你对一个iOS应用的搭建有个非常全面、细致的认识。完成了这个Demo后,就可以结合斯坦福公开课学到的东西创建属于你自己的APP了。
需要掌握的地方:
a.MVC设计模式。只有理解了iOS的MVC架构,才能把一个应用解剖成一个个单独的部分,这样你在开始做一个项目的时候才不会茫无头绪。b.UIKit的各种控件。特别是UITableView和UICollectionView一定要掌握,因为大部分的iOS应用都是由这两种视图搭建,吃透了它们那可玩的花样就很多了,其乐无穷。c.导航控制器UINavigationController和选项卡控制器UITabBarController。同上,这两个控制器也是绝大多数iOS应用UI框架的根基,也是多个MVC协同工作的最典型例子。d.场景切换的实现——Segue。熟练使用Segue很重要,因为一个应用一般都是各个界面轮流出现的,两个界面之间怎样实现跳转、怎样将一个界面的数据传递到下个界面,这都是实际开发中会遇到的问题。e.Storyboard和AutoLayout的使用。这两者是一个应用的UI界面设计不可或缺的部分。f.其它iOS高级编程。包括:数据存取CoreData/SQLite、多线程GCD、绘图CoreGraphics、动画CoreAnimation、网络编程、手势Gesture、多媒体AVFoundation等等,这些内容都可以实际用到时再深入学习。g.第三方库的使用。参考:GitHub上都有哪些值得