iOS 开发怎么入门?
143 个回答
2017.5.22更新。
这次答案的更新主要想把此答案
------------- 原文 -------------
反对以上所有答案。
我反对理由如下:不管是斯坦福大学的CS193p公开课、苹果官方文档、绝大多数市场上庞杂的教学书籍都不是很适合入门同学看,想入门的话应该选用学习成本最低的方法,从最最基本开始讲起,并不是一味的讲解语法与知识,而是一边实践一边学习知识才是最好的学习方法。
并且我想告诉题主,你问的是iOS 开发怎么入门,但是你补充说明里说道的设计模式、内存管理等内容暂时不用你关心,等你真正iOS入门了以后在研究吧。也许我可以这么定义你的问题:
一个略懂编程的人并且完全没有接触过IOS开发的人想要学习IOS开发应如何学习?
(一)objective-c语言开发iOS应用
- 为什么不让初学者看斯坦福教程:我以为,斯坦福大学IOS公开课不适合入门的同学看,里面第一课讲解的就是MVC模式。对于一个刚入门想要学习的IOS的同学可能就完全懵了,心里想:“我特么第一课都听不懂我后面还学个P啊”。如果以前没接触过面向对象的语言学习的热情肯定大打折扣。
- 为什么不让初学者看苹果官方文档:苹果文档是学习iOS最权威的教程,许多许多iOS高手都是常年抱着它去看,但是我觉得它的内容虽然权威但example对初学者一点都不友好,相信你很快就会失去兴趣与耐心因为你光看了好多语法但是收不到的学习效果反馈。而且个人认为中文译文翻译不是令初学者很容易理解。初学阶段,教程的易理解程度我认为是非常重要的一点。(实在要看请看英文原版。)
我不否认以上两者是极好的学习材料,如果你入门了iOS开发并且有一定的英文功底,我是非常推荐你去看的,尤其官方文档,应该经常翻阅。但是我认为保持学习的热情是最重要的。本着这个理念,我推荐的学习方法难度非常低,希望你们能满意。
- 第一阶段: RayWenderlich网站中的 The iOS Apprentice教程
这个教程截止目前已经不更新OC语言的版本了,但是如果你是抱着求职为目的的学习还是请看OC版本的(两年前的版本)。The iOS Apprentice的教程针对完全没有编程经验的人设计。这个教程是外国人写的并且有免费试读版,感兴趣的人要看看。里面说的东西都非常非常基本,里面一个共讲解了4个不同类型app,强烈建议一步一步按照上面所写的步骤敲一遍代码。其中你会遇到很多复杂的语句和长的可怕的函数,你不用感到恐慌,照着敲,知道它干嘛用完全OK了,随着你编程时间以及经验的增加,你都会懂得。
附链接: http://www.raywenderlich.com/store/ios-apprentice
注:这个教程是英文原版,并且收费,只免费提供一个app的教程。如果看完了这个免费的教程觉得还挺想继续学的请参考 @王寒 老师的翻译教程(只有前3个app教程,第4个教程刚出,国内应该还没有人翻译,如果想看只能付费)。PS:(现在开发iOS应用基本都是用Objective-C,至于刚出来的Swift现阶段暂时不推荐学习,如果想了解王寒老师也做了swift版本的The iOS Apprentice教程翻译,自己去找) 附上王寒老师教程下载地址: https://github.com/eseedo/kidscoding
- 第二阶段:培训班的网络课程及入门书籍
经过第一个阶段你应该已经大致掌握IOS开发流程,能编写一个非常简单的应用了。这时候相信你的热情应该会很高涨,但接下来的学习可能会很枯燥,做好准备。网络课程的话推荐李明杰的课程,不推荐其他的。(他目前在广州创业建立自己的培训品牌,没有自制力看网络课程的请去找他。杰哥开源了一些非常优秀的框架如:MJExtension )之所以不推荐其他培训班是因为优秀讲师实在是少的可怜,至少我目前接触过的人来说,许多人都是刚从培训班出来就拿着不菲的薪水去当讲师,所以还不如自己学。
建议首先要恶补基础知识。经过第一个阶段你可能觉得你懂不少了,但是只是表面,尤其是没学过编程的应该好好学习一下视频前面的课程,主要看看语法。等你看恶心了看烦了就去看视频里UI部分,这里相对于来说比较轻松,一定要把视频里写的语句打一遍,相信这样你理解会更深刻。里面说的不清楚的地方上网可以百度,可以查书(如果你有书的话)。
Q:视频教程是用来做什么的? A:光有实践没有知识是写不好程序的,第一阶段基本都是实践,第二部分则是用来查缺补漏。 之所以推荐网络课程是因为讲解的比较系统,各种入门知识都会涉及。因为iOS所涉及内容庞 大单看几本书还是涉及不全的。
Q:上不上培训班? A:个人意见是不推荐去,自学足够了。现在学习iOS的环境比前几年好太多了,光凭借网上的资料是 完全可以的学得很好的,如果你连这点学习能力还没有我也不相信你将来能成为一个很优秀的工程师。而且你会发现在社会上一些互联网公司是拒绝接收培训班出来的人,如果你简历造假被揭穿以后会更要命,你当真不知道面试官看不出你水平到底是学了4个月的还是2年的么?
推荐入门书籍: tips:以下所有书籍有英文版看英文版,有最新版看最新版。不光是iOS,你只要进了编程圈你的英文不好会很大程度上限制你的发展。而且市面上能买到的中文教程真的没几本能看的,浑水摸鱼的厉害。
1、《iOS Programming》
2、《iOS 8应用开发入门经典》
我没找到最新,如果有最新的看最新的
3、《iOS编程实战》
这本书好像也没新的了,旧的可以看看,绝大部分都差不多。
其实除了这基本书还有很多质量很好的书(比如封面都是水果类的哪些书).. 这里我想多说一句,买iOS开发的辅导书千万别买过时太久的,我看以上有答案还推荐iOS4系列丛书呢...拜托现在都什么年代了,现在iOS8教程都要出来了,你iOS6的教程都过时好久了更别提iOS4了...对于新出的swift语言好多人难以选择不知道该学OC好还是Swift好。我个人建议现在学OC,一门新语言的诞生需要经过时间的考验与洗礼。等你学好了OC以后再看也不迟。
- 第三阶段及以后
到这个阶段你应该拥有了充分的自学能力,已经达到了入门水平。 这时候以下网址将成为你的家常便饭: Github,StackOverFlow 如果你编程遇到困难,在StackOverFlow上面应该都能找到合适的解答。(前提是你英文不要太差)。Github上好多开源代码足够丰富你的眼界。如果你想成为一个iOS开发者的话这上面两个网站是你经常以及必须会用到的。
Github上怎么搜牛人们的项目:
到此为止你的入门已经结束了,相信你已经知道怎么开发一个App出来了,但是我还想给大家介绍一些东西,如果你以后想在iOS开发这条道路上越走越远的话。
---------------------------- 提升篇 ---------------------------
因为iOS开发知识更新速度非常之快,每年到6-7月份WWDC大会开幕以后都会有很多新东西要学,这时候最简单的方法有两个:
(1) WWDC session系列视频。
https://developer.apple.com/videos/(2) iOS by Tutorials
所有新特性囊括其中。
3、其他适配系列教程 ChenYilong的github上每次有新特性介绍的时候都会有详细的适配系列文章,不知道今年还写不写。 GitHub - ChenYilong/iOS9AdaptationTips: iOS9适配系列教程(iOS9开发学习交流群:541317935)
想学一点UI的同学可以看:
1、design+code 网址: https://designcode.io/
2、《DESIGN TEARDOWNS》
想学一点动效/交互的同学可以看:
1、下载QuartzComposer及相关插件如Origami,教程: Quartz Composer学习
其他推荐网站:
1、 NSHipster
进价书单:
0、《REVCON》
又是一本Ray的书。这本书刚刚推出,内容非常好里面有800多页干货,都是以tips形式进行归纳。
1、《Effective Objective-C 2.0》(必看)
下面是中文版,翻译不好,点名批评。
2、《Objective-C高级编程 iOS与OS X多线程和内存管理》(必看)
日本人写的一本书,推荐看。
3、《iOS开发进阶》
很多人吐槽这本书没干货,其实我觉得你看完了以后有收获就好了啊,这本书巧哥会告诉你一些编程工具一些技巧以及一些tips。
4、《iOS应用逆向工程》
5、《iOS应用安全攻防实战》
iOS安全方面推荐以上两本书
6、《iOS》
推荐博客及网站: 1、Github: https://github.com/ 2、StackOverFlow: http://stackoverflow.com/ 3、Code4App: http://code4app.com/ 4、cocoachina: http://www.cocoachina.com/ 5、objc中国: http://objcio.cn/
- 进阶博客(排名不分先后..)
1、王巍的博客(我们都叫它喵神,他很萌哒) 链接: http://onevcat.com/ 理由:他的swift的新书讲解的非常好,但不适合入门,进阶的话这是很适合的一本书。其他关于OC的内容可以翻看喵神的博客。 2、唐巧哥的技术博客 链接: iOS开发如何提高 理由:据传说是iOS圈的刘德华。巧哥05年1月会出一本进阶的书,可以关注以下。 3、叶孤城的技术博客 : 链接: 叶孤城带你读源码之RESideMenu 理由:叶孤城童鞋的风格就是讲解细腻,通俗易懂。 4、破船之家: 链接: beyondvincent.com 的页面 理由:破船的博客内容很全面,一些开发笔记,技巧他都会教给你。 5、Xcode Dev 链接: Xcode Dev 理由:也是一位大神的原创博客,内容很值得学习。 6、txx's 的博客(我们都叫它虾神,他也超萌哒) 链接: txx's blog 理由: 90后非常优秀的iOS开发者,看看他的大学时期的经历才发现我们过的是多么懈怠,大神之所以为大神也是有原因的。 7、Kevin的博客 链接: Kevin Blog 理由:周楷雯是一个非常厉害的90后iOS开发者,他前些年写的项目在Github上拥有2500+star (PNchat?忘了)非常恐怖。 8、念茜姐姐的blog 链接: 新博客: http://nianxi.net 旧博客: 念茜的博客 理由: iOS圈里的女神级人物,她写的iOS安全类的文章非常值得一看。 9、孙源的blog 链接: sunnyxx的技术博客 理由:90后iOS开发者,技术同样非常强,目前似乎在百度知道任职。 其他的博客我就不列举了,因为他们自己都有一个圈子大家自己去找吧很容易一找找到一堆,前提是你要有心。
(二)swift语言开发iOS应用
这里推荐两个入门学习比较好的方法 1、 http://appcoda.com的网站(难度指数:※) 非常浅显易懂的入门级swift教程: http://www.appcoda.com/tutorials/
这个网站可以看两方面:
(1)、随时更新的swift tips (有一定水平在看)
(2)、新手主要看以下这本书
2、《Swift Tutorials》 依然是raywenderlich出品,目前只有英文版。
3、官方swift译文教程 《The Swift Programming Language》中文版
4、上文提到的王巍的博客(喵神)《Swifter - 100 个 Swift 必备 tips》以及 http://objc.io相关书籍《函数式Swift》
这两本书是swift里面非常难得的学习资源,好好研读可以让你少走很多弯路,必看。
ObjC 中国 - 书籍 以上是链接,给喵神打广告我也是心甘情愿的..因为想套路他妹妹已经很久了:-D
等我想到再补充。以上。
在答题之前,我要先感谢知乎上关于iOS开发入门的所有提问和答案。没有这些提问,我不会萌发自学iOS开发的念头;没有这些优秀的答案和答主们的励志经历,我也坚持不到最后。在这里,尤其要感谢 @郝健宗 @苏菲 @王杰 @Judy Zhu @张中宝 @Wang Hailong 这几位前辈的答案,对我帮助很大。
最近我找到了一份iOS开发的正式工作,所以想把自己学习iOS开发过程中的经验和心得写出来,希望能够帮助那些努力但迷茫的初学者。
首先介绍一下自己的背景,我大学学的是机械专业,与计算机有关的课程只有一门C语言,在接触iOS开发之前,我已经在一家机械制造行业的公司工作一年多,做的工作也与计算机毫无关系,所以我属于零基础转行。
2014年10月,出于对机械行业的种种失望和对互联网行业的浓厚兴趣,我萌发了转行的念头,于是开始利用下班时间自学计算机知识(Java、Python、数据结构与算法)。学了大概两个月,基本的东西有了大致的了解,但是感觉要熟练掌握还是任重道远。由于时间安排上的原因,我就将重心转移到iOS开发上面。
2015年1月,我开始开发我的第一个iOS应用,这款APP从第一行代码到苹果App Store上架用了大概两个月的时间,但总的时间跨度有接近4个月(春节期间停滞了一个多月,等待苹果审核10天)。APP上架后,我就开始投简历,并拿着我的APP去面试,很幸运地拿到了几个还不错的Offer,然后就挑了一个去上班了。
下面就是我自学iOS开发的一些经验和心得。
一、 准备工作
1. Mac、iOS设备、开发者账号
这些是做iOS开发必须要有的,而且是一大笔钱,但不要怕花钱,因为这些都是值得的。如果能够学有所成,一两个月的工资基本就回本了。就当是自己交的一笔“培训费”吧。
2. 心态上的准备
如果你和我一样是零基础转行iOS,那么一定要有破釜沉舟的勇气和决心,并做好打持久战的心理准备。如果畏手畏脚、瞻前顾后,我劝你还是想好了再来,免得浪费时间和金钱。我当初收入很低,是拿了3个月的工资买的Macbook,还天天担心丢了或者弄坏;后来学习到小有所成时毅然选择了裸辞,孤身一人来到陌生的上海,经过2个月的待业状态才找到工作。这一路走来都承受着巨大的精神压力和物质压力。
二、 学习路线
1. 对编程的基本认识
如果你是完全的零基础,我建议先要对编程有个基本的认识。建议从C语言入手,因为C语言比较简洁易上手,并且和Objective-C很相似。
视频推荐网易云课堂的 “计算机专业体系”课程,很适合入门。
书籍的话,推荐 《C Primer Plus》。
2. Objective-C语言学习
当对C语言有个大致的了解后,就可以开始学习Objective-C了。
推荐书籍:
《Objective-C基础教程》
《Objective-C程序设计》
注:这两本内容都差不多,但《Objective-C基础教程》写的更好、更经典,建议以这本为重点精读。但是这本写的比较笼统,难度稍高,所以如果遇到不懂的地方就看看《Objective-C程序设计》,这一本写的简单、详细一些。
需要掌握并熟练运用的地方:
1) 面向对象编程的基础知识。包括:面向对象与面向过程的区别、为什么要面向对象编程,类、对象、继承、方法、属性、接口等概念的理解与使用。
2) Foundation框架。主要是NSString类、NSArray类、NSDictionary类、NSNumber类、NSRange类的熟练运用。
3) 内存管理MRC、ARC的原理,委托delegate、协议protocol、类别category、块block的理解与使用。
3. iOS SDK/Cocoa Touch学习
有了Objective-C基础,就可以开始边看斯坦福公开课边做APP了(个人觉得没有OC基础直接看这个会很吃力)。视频如下:
斯坦福大学公开课CS193P《iOS7应用开发》(Objective-C语言)
斯坦福大学公开课CS193P《iOS8开发 》(Swift语言)
推荐书籍: 《精通iOS开发》
第一个iOS应用:
苹果官方有个做iOS应用的教程—— 《马上着手开发iOS应用程序(Start Developing iOS Apps Today)》。强烈建议以这个Demo作为你的第一个iOS应用,因为这个教程能让你对一个iOS应用的搭建有个非常全面、细致的认识。完成了这个Demo后,就可以结合斯坦福公开课学到的东西创建属于你自己的APP了。
需要掌握的地方:
1) MVC设计模式。只有理解了iOS的MVC架构,才能把一个应用解剖成一个个单独的部分,这样你在开始做一个项目的时候才不会茫无头绪。
2)UIKit的各种控件。特别是UITableView和UICollectionView一定要掌握,因为大部分的iOS应用都是由这两种视图搭建,吃透了它们那可玩的花样就很多了,其乐无穷。
3) 导航控制器UINavigationController和选项卡控制器UITabBarController。同上,这两个控制器也是绝大多数iOS应用UI框架的根基,也是多个MVC协同工作的最典型例子。
4) 场景切换的实现——Segue。熟练使用Segue很重要,因为一个应用一般都是各个界面轮流出现的,两个界面之间怎样实现跳转、怎样将一个界面的数据传递到下个界面,这都是实际开发中会遇到的问题。
5) Storyboard和AutoLayout的使用。这两者是一个应用的UI界面设计不可或缺的部分。
6) 其它iOS高级编程。包括:数据存取CoreData/SQLite、多线程GCD、绘图CoreGraphics、动画CoreAnimation、网络编程、手势Gesture、多媒体AVFoundation等等,这些内容都可以实际用到时再深入学习。
7) 第三方库的使用。参考: GitHub 上都有哪些值得关注学习的 iOS 开源项目? - 编程
4. 坚持写代码、查文档、读技术博客
学习编程,一定要勤于动手,看再多的书、再多的视频,如果不动手敲代码都是白搭。哪怕书上和视频上的代码你一行都看不懂,也要亲手把代码敲一遍、把Demo亲自实现一遍,这很重要。编程是手敲会的,不是眼睛看会的。
学习iOS开发的过程中,有遇到不懂是正常的,别害怕不懂,Cocoa的内容细节本来就多,每年的WWDC还会发布一些新技术。所以遇到不懂的知识一定要学会查苹果官方API文档: iOS Dev Center
做APP时,如果一个地方不会实现,或者遇到解决不了的问题,一定要学会使用Google搜索。一般来说,初学iOS遇到的问题, Stack Overflow上都有类似的提问,基本一搜一个准。
此外,CSDN等一些技术博客上的文章也很有参考价值。推荐一些优秀的iOS技术博客——中文 iOS/Mac 开发博客列表: tangqiaoboy/iOSBlogCN · GitHub
三、写在最后的话
如果你能按照以上所述做出一个APP上架并找到工作,那也基本算是入门了。但这并不是终点,这只是一个新的起点。iOS开发,乃至整个计算机/互联网行业,后面的路还很漫长。苹果的整个Cocoa框架,可谓是博大精深,里面可以深挖的东西太多了;而且一个程序、一段代码可以进行的优化是没有止境的。作为开发者,只会一门语言是不够的,网络编程、数据库、算法、设计、交互等等东西都是需要掌握的,而语言只是实现这些的工具,语言其实是最简单的。
此外,如果你和我一样是非科班出身,还需要把计算机基础课程补回来,即:数据结构、算法、操作系统、数据库、计算机网络、编译原理等。因为这些知识是你的“内功”,这些基础直接决定了你在这个领域的天花板所在的位置。
当然,基础差一点也问题不大,最重要的是你对计算机、互联网的热爱和热情。你需要有很强的自学能力,不断地去学习新知识,才不会被这个日新月异的行业淘汰;你需要保持一颗好奇心,不断地尝试和接受新事物,不断地创新,守旧的人在这个行业无法生存。在我找工作的过程中,那些知名的大公司都是直接在简历关就将我刷掉了,而那些给我Offer的公司,无一例外都表示,之所以选择我是因为欣赏的我的热情、看重我的自学能力。
所以,如果你和我一样对iOS开发充满热情,敢于接受挑战,那么就从现在开始努力吧,我在前方的路上等你!
——————————————————————————
iOS开发QQ交流群:426310126,加群请注明知乎。
——————————————————————————
感谢这个问题下给予iOS初学者诸多帮助的答案。以下是我从7月份开始学习iOS以来所做的事情的整理,供后来者参考。答案中所推荐论坛和学习资源都是我自己用过的。
一,前期准备
一台Mac Pro或其他苹果电脑
从Apple Store上面下载需要的Xcode版本并安装
如果你是工作上进行iOS开发,别忘记询问你所需要的开发相关的账号,比如查看错误日志或者共享代码资源等。
二,学习准备和计划
我的背景:编程经验为今年4月开始接触java三个月,无C语言经验,无objective C经验。对开发完全没有概念,但是需要快速掌握。看视频和循序渐进的方法都不适合我。
1. 不知道先学什么,所以简单搜索发现国内比较权威的论坛,一般来说国内比较大型的论坛都会有新手需要的整套资源。发现这个
新手初学 iPhone 开发的路线图。这个图建议没接触过C语言的人先去学C。因为我要快速学习所以放弃。然后到zhihu本问题下阅览
@若虚行的答案,里面有提供很好的入门地图,但过于复杂。这两个资源都比较适合长期学习的人制定计划。
2.根据各个地方的建议,下载了以下文件:
A. Your first iPhone Application中文版 苹果的入门官方文件
马上着手开发 iOS 应用程序 (Start Developing iOS Apps Today): 设置B. iPhone App Programming Guide 比较详细的苹果的开发手册。没有中文版。为了将来沟通方面我下了日文。
iOS App Programming Guide: About iOS App ProgrammingC.苹果官方的界面设计指南。由于和开发本身关系不大,所以可以不必立刻学习。对UI设计感兴趣的话可以看看。
iOS Human Interface Guidelines: Designing for iOS 7学习方案STEP 1:
1. 简单的基础知识普及(0.5天)
强烈推荐这个链接:
iOS开发新手专题里面解说了很多很基础的概念和名词,对我这种完全无IT背景的人来说是救星。还包括了objective C语言的快速入门,对于会一门以上编程语言的人来说节省了不必要的时间。
2.找了一本简单易懂的漫画objective-C教程。因为通过java知道了基础的编程思想,所以主要是熟悉这门新的语言。里面有些内存管理之类的,光是看书很难有具体的理解,没关系,读完。(2天)
2. 粗读iPhone App Programming Guide,主要目的是了解这门语言的特点和能干什么,和我知道的java的区别,知道有什么功能即可,实际编程时再翻开参考。(1天)
3. 细读Your first iPhone Application中文版,彻底理解每一个知识点并且在Xcode上实践。(2天)
4. 把 iOS6实践指南 里面还没有涉及到的部分读懂做会。(我只是2天过了一下,没详读所有部分,建议有时间的人用一周去熟悉每个部分)
CocoaChina翻译组贡献:iOS in Practice《iOS 6实践指南》全书翻译完整版下载5. 利用公司的资源制作一个餐馆搜索App。(3天)
经过STEP 1的学习,我大概对iOS开发有了一个极其极其粗略的认识。包括它的MVC模型的构建方法与当年用java写网站不同,包括它的内存管理比较麻烦,包括它的.h 和.m文件以及里面的属性等设置时需要注意的。但是对这些认识我都还没有清楚的答案。
编程在书本上往往是非常抽象的概念和讲解,在这门科目上我完全是个实践型的学生。看书总是一头雾水,只有实际做东西才会有成长。所以带着这些极其粗略的认识我进入到了第二步。
学习方案STEP 2: 大量的代码阅读和一点点动手。
阅读:
带着这样粗浅的学习我就进入了iOS开发团队。无论是leader还是我自己都觉得这个水平简直不能写代码。但是leader还是给了我一些非常简单的工作,比如调整UI,把AB TEST真正写入程序等等。在这个过程中我首先得把自己负责产品的代码读明白,至少得知道修改哪里才行吧!在阅读前辈们写下的代码时,STEP 1里面的那些疑问就一点点清晰起来了。
读书终究是泛泛而过,而当你有一个目的或者任务的时候,才会去真正理解每一行代码的意义。对于没法在公司接触代码而是自学的朋友,可以去这个问题
GitHub 上都有哪些值得关注学习的 iOS 开源项目?下用github下载开源代码阅读。(到了这里,GitHub也应该是你列入学习计划的东西之一。)
如果有一个精通iOS的人在你身边随时解说是最好的了。但我们都很难有这种机会,所以善用google,善用Stack OverFlow(一个类似知乎的编程Q&A网站)。大部分问题都可以通过搜索解决。
动手:
往往我在写代码的时候,都是边开google搜索边学习边写的。虽然不比专业的iOS编程者速度,但至少超过了leader对我预想的开发速度。当然写代码仅仅是开搜索和copy-paste是不行的。但在初期做非常简单的开发时,这样的方法可以让你快速上手又能品尝到编程的乐趣。
对于自学的同学,我的建议是,看过一些案例之后,你可以试着把案例中的各种功能重新排列组合。教程很多是做一个带相机功能的app,或者一个checklist,做起来很是乏味。你要定下一个真正想做的东西,并且好好地画出UI设计,不要想着只是练习代码。这个过程会是乐趣无穷而且充满挑战的,认真的态度也可以让你坚持在遇到困难的时候也做下去。
学习方案STEP 3:
再往下我只能推荐你去继续写。因为我觉得学习编程最好的途径就是 实践-遇到问题-解决问题。但是一直到STEP 2我们都是在写各种各样简单的小程序,多少也腻了。
我建议的几个方法:
1. 找一份可以允许现在的你进行iOS编程的实习或者工作。(这也许较难,因为大部分公司都希望直接找到生产力而不喜欢慢慢培养初学者)
2. 找几个有想法的筒子一起认真做个项目。(如果你的团队里有编程厉害的人更好,但你必须相应地提供自己的价值)这和自己练习是不同的。
再往后的学习,就是反复的进行STEP 3的1和2啦。当然在这两个过程中,与各种人的交流啊,搜索啊,进一步的书本学习都是可能发生的。但我觉得贯彻1或2的行动是最重要的,没有他们,你很难保证持续的学习动力。
------- 2015年7月22日更新 ------
刚开始做程序员的时候,曾经把自己自学iOS开发的一点经验写在这里分享。不知不觉,至今也获得了400多赞。后来陆陆续续有人私信我咨询iOS学习的问题,最近有一位大四的学生给我发私信,我觉得他遇到的问题比较典型,下面我把他的问题和我的回复贴出来,供参考。
我的计划大概是这样的:先看计算机导论课程,然后开始学习C语言编程,后续大概通读一遍SICP、CASPP、算法导论,然后学C++ primer。学到这里就开始学习object-c/swift,然后自己做一个app,带着这个去找一份工作。 我的计划会不会太偏重原理了呢? 我总是担心基础不好的话后续职业发展会受印象,却又怕一年时间完成不了这么多,到时候连工作都找不到。 请问我应该怎样平衡呢? 或者我可以先学一部分基础,然后先尝试实践完成app开发,以后再补回来? 您觉得在iOS开发过程中哪些基础是比较重要的呢?
你好,我将我这两年的一点经验尽量说明白供你参考。
先说我的看法,不客气地说,你的学习计划过于庞大,要学完这些知识,不要说一年,三年可能都不够。所以非常不建议看完你罗列的所有知识才开始进行app开发。
就我的经验来说,我是用晚上和周末来学习的。我用业余时间看算法导论,半年只学了1/5,后来还是放弃了。去年花了足足半年学习Code Complete。今年开始学习CSAPP,花了半年时间学了差不多一半。
基础知识对于职业生涯确实非常重要,所以我会在今后的职业生涯一直保持学习。但是如果不是已经在从事iOS开发工作,我肯定不会看这些书。
所以对于你来说,如果想从事这份职业,要先学习写一个iOS app最必需的技能,通过解决问题驱动自己学习!学习这些技能,对于一个零基础的人,我想fulltime学习3、4个月应该足够了。这些知识包括:Objective-C或swift的基本语言知识、Cocoa框架的基本知识、xcode的基本用法。在这个阶段,找编程的感觉,跟网上课程编一些课后作业demo app是一个好选择。
在这个阶段,你甚至可以不用学习C、算法、计算机系统等。
但是可以花时间想想自己用4个月时间,从产品角度想想,可以做出一个什么样的app?在纸上画一下app产品流程图,争取弄一个出来。
遇到问题怎么办?自己查资料,问人,解决。
然后你会发觉需要解决的问题越来越多,需要了解的知识越来越多,你之前罗列的资料自然就有动力每天学习下去了。
非常欣赏你学习基础知识的渴望,但是要注意办法,不要尝试一口吃下整个大象。
--------原答案-------------
自己去年12月的时候说要更新一个详细的答案,结果就被我自己烂尾忘记了,最初写这份答案的时候自己还是在摸索阶段,推荐了下面这些材料:
- 斯坦福大学的CS193p公开课:最新版是2013年winter。课程不仅包括iOS入门基础知识,而且还会布置由该教授亲自设计、涵盖整个课程的作业。
- 苹果官方文档:每一份GUIDE都是一本迷你的教材,写得很精致,而且每一份guide都会延伸到其他知识。可以从这篇开始:马上着手开发 iOS 应用程序。
- Ray Wenderlich:很多step by step的教程,适合掌握一定知识之后跟着教程做着玩。
上面这三分资料,确实就是我刚开始学习iOS开发的时候用得最多的资料,在着手开始iOS Code之前,需要学习相关Objective-C的知识。
对我帮助最大的可以说是CS193p这个课程(免费的哦),我跟着这个课程一行一行代码完成布置的作业,课程完成之后我就能够自己写一个简单的app出来,并且我也知道该在哪里问问题、怎样找答案(很重要)。
当我了解整个app的制作流程之后,我就给自己定计划,1个月之内必须开发出一个app,从原型设计、界面设计、到CODE。
最终我做了几个实验性的app,虽然没有在app store上架,但是能够在自己的ipad、iphone上运行展示,我就拿着这几个app去面试,很幸运地找到现在的工作。
工作之后一直在使用的材料:
- 苹果官方文档,必须的参考书;
- StackOverFlow,一有问题就问他;
- Github,搜索关键词iOS或者objective-c,会发现很多高手已经把大部分基础性功能实现并且贡献出来了;
另外teamtreehouse提供收费的在线教程,应该比较容易入手。
所以我认为,其实用什么材料虽然也很重要,但是市面上优质的材料呢,不外乎那么几份,最重要的是自己有一个idea要落实下来把它完成、写成一个app,这个过程当中自己自然就会去找答案、找材料、解决答案啦。
希望能帮助到跟我一样初学入门的朋友。
楼上的各位大神,已经从技术层面说得足够多得了,我来说点虚得把。
说白了,就是一个学习方法的问题,这点不只iOS,其实任何编程都是一样得。
很多人学编程主要就看书,看视频,甚至跟着视频开发,但也觉得没用。 为什么? 因为在这个过程中并没有真正动脑,所以这其中得知识点也很容易过目就忘。
这个逻辑,在背单词上也有运用,同样都是看单词:
1. 看一眼英文,想一下是啥意思,想不起来,再去看中文。
2. 看一眼英文,看一眼中文
重复看几遍,1和2效果相差巨大。 按1看三遍,你基本就记住了。按2看三遍,你还是啥都记不住,连一点印象都没有。
所以这个阶段,
其实你去看任何书,看任何视频,都是没用得。
跟着书,跟着视频敲代码,作用都是很小得。
怎么办?其实很简单,和上面背单词得例子一样。
你把你看书看视频想要学习得知识点,列一个表,然后你YY一个App,App得功能能够尽可能多得覆盖到你得想要学习得知识点。
然后建新工程,开始写。遇到不懂不会的先思考,想不出来再去查书查视频,不要随便问,不要做伸手党,因为你得到知识得过程越容易,这个知识就越不属于你
你会说, 我刚开始学耶,怎么可能就独立做App。
你错了。
这是很多人最都犯得错误,我觉得最核心得还是中国得计算机教育得方法不对。为什么很多人都会认为“独立做个App”很难? 是因为他们潜意识里,学习编程得过程是这样得:
1. 学习A->学习B->学习C->............................学完了!
2. 我要开始做项目了,这个时候发现不管看啥东西,好像都挺难做得,而且似乎自己学过得东西,也没什么印象了,函数也不记得怎么用。
简单的讲:逐一学习了每一块积木的形状与用法,然后别人给你一座城堡,你去思考如何造个一样得出来。(思维是逆向的,解题式的,过程是漫长的,成就感是没有的,挫败感是一直有的)
那有没有更有效得方法呢? 我觉得是有得。
分享一下我中学学VB的过程
1. 拿到谭浩强老师的书,翻了两页,学会了InputBox(弹出一个输入框,接受用户得输入,函数得返回值就是用户输入得字符串), 以及MsgBox(弹出消息框)得用法
2 灵机一动,貌似能做点东西了。
(当时很流行一种网页,你进入后会不断弹框,问你得好朋友名字,你的名字,你暗恋的女生名字,最后生成一篇有意思得文章)
3. 没错我就山寨了一个这种应用得Windows Form版出来。其实就靠这两个函数。这就是我第一个“独立App”
4. 之后又想到,诶既然能接受用户输入,岂不是就能做计算器了?于是为了实现计算器,又间接学会了基本得数学库,textbox, button等控件得用法
这种方法,简单的讲:学习了一些积木得用法,就尝试用这些能搭出不同得东西,在这个过程中逐渐学会了其他积木得用法,然后再尝试搭出更厉害的东西,以此循环。(思维是正向的,创造性的,过程是短暂的(拆解成了不同的阶段),成就感是一直有的,挫败感是暂时的)
总结一下:
- 编程本质是创造,创造本身是令人愉悦的,所以其实找对方法,学编程是一件很快乐的事,这一点比其他行业好很多,比如你学再难得编程,都比考CPA要爽。
- 兴趣是最好得老师
- 勤造轮子
--果然收藏是赞的三倍--
之前一直关注着这个问题,也从中获益很多。现在,投入了约200个小时,我上架了自己的第一个简单的App,终于可以来回答了。
---
目录:
- 确认个人目标
- 分析个人情况
- 设计自己的路线
- 记录学习的过程
2. 开始吧
- 语言
- 了解你的工具——Xcode
- 基于项目的学习
- 从简单App开始, 分析其生命周期
- 学习框架
- 理解概念
- 动手,不断犯错,不断改进
3. 界面
4. 资源
- 书
- 课程
- 网站
- 文章
---
正文:
1. 确认个人目标
- 分析个人情况
在听取建议之前,想一想自己的情况会更有效。比如,你有面向对象的编程经验吗?如果有,那么语言学习就不需花太多时间。英语如何?基本的英文文档能读懂吗?适合你自己的学习方式是什么?
对我而言,软件工程在读,基础课程都学过,入门较快。学校更多是在教理论,我更偏向在实践中学习(learning by doing)。
- 设计自己的路线
了解自己的基本情况之后,就可以设计自己的学习路线了。一开始不会有完整的路线,需要根据自己的情况不断的调整。不妨读一读其他人入门的文章,吸取经验。
- 记录学习的过程
你怎么知道自己学得如何?传统教育,会有传统考试作为检验。我的做法是,记录过程,设置检验点,寻找概念的共通性,举一反三,问问题以及写作总结。
2. 开始吧
一开始熟悉编程语言,然后了解开发工具Xcode,理解大概的项目框架,App生命周期,界面如何和代码交互。理解设计模式,例如MVC。之后,就可以开始与Cocoa框架交互。最后,根据你想要写的App类型,再针对性的学习。
- 语言
如果把写App比作是建房子,那么语言就是基本的砖块。那么,应该学习Swift还是Objective-C呢?我个人的建议是先Swift,之后再熟悉OC。相比较OC,Swift更易上手,社区也日渐活跃。如果你有编程经验,这一步应该不会花去太多的时间,get your hands dirty才是关键。
- 了解你的工具——Xcode
工欲善其事必先利其器,快速的熟悉Xcode界面,各面板功能,常用的快捷键等等,会提高不少效率。
- 基于项目的学习
除了斯坦福大学的iOS开发入门之外,我个人很喜欢的一套教程是[Teaching App Development with Swift](
Swift Education)。它主要的观念就是基于项目的学习,每课时都有不同的项目,一个项目多个课时,清晰的步骤一步步搭建起完整功能。由实践引出知识点,最后给出延生思考和资料。
- 从简单App开始, 分析其[生命周期]( https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/TheAppLifeCycle/TheAppLifeCycle.html#//apple_ref/doc/uid/TP40007072-CH2-SW1)
- 学习框架
框架是什么?
很多系统的功能,都是不需要你实现的。想象你自己在拼一辆四驱车,马达啊,轮子啊,车身啊,一开始,这些你都不需要自己造。你需要知道的只是,每一部分的功能是什么,怎么把他们拼装在一起,哪一部分拼在哪里。同样的,框架就像是各种各样的零件,比如UIKit,可以改造车身外观,多媒体需要用AV Foundation。
总之,要弄清两个问题:
1. 什么时候用什么?(When to use what?)
2. 怎么用?(How?)
- 理解概念
一边练习一边思考思考,各概念之间的联系与区别,多问几个为什么。比如:delegate、protocol、tagart-action、closure 。
例如,其中的Protocol,我是读了[iOS 8 Programming Fundation with Swift (Matt Neuburg)](
iOS 9 Programming Fundamentals with Swift - O'Reilly Media)中的介绍,才彻底理解。
- 动手,不断犯错,不断改进
做完整的项目,而不只是一个功能点的练习。完整的项目,需要综合的考虑。界面的设计,类的设计,对象之间的交互等等。 一开始不知道如何实现时,不妨先看看其他人的实现。你可以查找书籍,在Github上阅读相关功能的源码,上StackOverFlow提问等等。
3. 界面
Apple很重视用户体验,学习基本的界面设计也是很必要的。之前完整的看了[DesignCode](
https://designcode.io)的教程,了解了基本的设计以及Sketch的使用。iOS Human Interface Guide也是开发之前的必读书。
界面布局的时候,不得不提一句AutoLayout,一开始使用很可能会出现各种问题,不过领路要领之后,你会发现它的强大之处。
---
资源:
网站:
- http://www.developer.apple.com/ 官方资料。文档阅读,一开始可能不知道如何下手。有一篇[博文]( 苹果Xcode帮助文档阅读指南)写得十分详细。当然,[iOS 8 Programming Fundation with Swift]( Matt Neuburg)书中第八章也是有介绍的。
- http://github.com 程序员界Facebook。
- GitHub - ipader/SwiftGuide: 这份指南汇集了Swift语言主流学习资源,并以开发者的视角整理编排。http://dev.swiftguide.cn
- GitHub - matteocrippa/awesome-swift: A collaborative list of awesome swift resources. Feel free to contribute!
Stack Overflow 技术问题版知乎 http://www.raywenderlich.com/ 声名在外的系列教程。 NSHipster 你不知道Mattt Thompson?快去看看吧。 https://www.objc.io/ 基础到进阶推荐。 https://designcode.io/ 了解设计流程,基本界面交互、动画等。当时完整的跟着做了一遍,收获良多。
书:
- The swift programming language
- [iOS 8 Programming Fundation with Swift (Matt Neuburg)]( iOS 9 Programming Fundamentals with Swift - O'Reilly Media)
- [Programming iOS 9 (Matt Neuburg)]( Programming iOS 9 - O'Reilly Media) 个人强烈推荐的两本书,一直不断的在看,讲解细致,覆盖全面。
- Learning iOS UI Development (Yari D'areglia)
- Yair D'areglia的博客也值得一读: Think & Build
Post:
- [Things I wish I had known before starting iOS development]( Things I wish I had known before starting iOS development — Part 1 — iOS App Development)
- [iOS开发如何入门?——知乎]( iOS 开发怎么入门? - Franz Fang 的回答)
- [自学iOS开发的经验]( Limboy's HQ)
我只列出了常用的资源,资料不在于多,而在于合理的利用。一个想法的开始很简单,按下收藏也很简单。不简单的是,开始去做,开始去实现。相信,如果你也愿意付出200小时,你也能完整的将自己的想法实现为应用。
希望对你有帮助: ~)
----
PS:我的第一个App地址: https://appsto.re/cn/jnCgbb.i
当然,这不是我写的第一个App,你可以在[我的github]( Yogayu (Xinyu You) · GitHub)上看更多的项目,比如开源的[EmotionNote]( GitHub - Yogayu/EmotionNote: This is a notebook that can feel your emotion!)。
最近App更新了2.0版本~
如果你想进一步了解开发过程,可以阅读我写的《独立开发纪录》
http://www.jianshu.com/p/35e9b1f821c4。
通常情况下,独立谈到 iOS 应用开发,绕不开的只有两件事。第一个是开发工具 Xcode,第二个是编程语言 Swift。本文我将以学习这两件事为核心,介绍一些优质学习资源,足够让你在程序开发的道路上从入门学到出门。
Swift 开发 App 入门课程
若你曾经没有任何 iOS 编程经验,苹果官方为你准备了两本教程,助你零基础入门并了解 Swift 及 Xcode 协同合作的开发体系。这两本书分别是「Swift 开发 App 入门课程」和「Swift 开发 App 核心课程」。
其中入门课程侧重于讲解编程中常用的概念,如字符串、参数、结构、枚举等等,以及 Xcode 的简单上手;核心课程则是通过五个动手操作的实际案例,深度讲解 iOS 开发的方方面面,如 UIKit、ARKit、Xcode 界面搭建工具等。
获取:免费。这两本书均可以在「Apple 图书」应用中直接搜索并下载,或访问 苹果 - 人人能编程下载。
WWDC 视频中心
每年六月,苹果全球开发者大会 WWDC 都会如期举行,那么开会的时候究竟在讨论什么呢?其实每年大会主题演讲主要是面对媒体记者的,阐述当年软件方面的最新动态。但最受开发者关注的当属 WWDC 上的另一个专门面向开发者的演讲「Platform of Union」,这个演讲会剖析当年新技术的具体实现方式,以及开发者可以如何将这些技术用在自己的应用中。
WWDC 期间的视频远不止这两个主题演讲,事实上,每年 WWDC 期间将会诞生上百个新的教学视频。它包含了开发应用程序所需要的方方面面的知识,如触控设计、本地化方案、视觉设计、开发工具、市场营销、媒体应用等等。
无论你是新手入门想要找到某个知识的教学视频,还是已经资深需要对某个点深入理解;无论你是设计师还是程序员,或者只是围观群众想深入了解 Apple 这套生态系统,都可以在 WWDC 的视频中找到为你定制的那几个。
获取:免费。所有视频资源均可以在「WWDC」应用中下载,或访问 苹果 - WWDC 视频中心下载或在线观看。
Xcode 帮助文档
Xcode 是开发 macOS、iOS、watchOS、tvOS 上应用所绕不开 IDE。其功能十分强大,却也不可避免的非常复杂。若你新手上路,难免会被眼前的软件所吓到,这时你可以通过 Xcode 自带的「说明文档」进行快速入门或答疑解惑。
当你编写程序时,某个代码不理解了,可以打开 Xcode 自带的另一份文档「开发者文档」。与说明文档侧重于软件讲解不同,开发者文档侧重于讲解代码编程的各种 API,你可以把它当作一本 API 的百科全书来使用。
获取:免费。可以直接在「Xcode」帮助标签下查看,或访问 苹果 - 开发者文档下载或在线观看。
堆栈 Stack Overflow
Stack Overflow 是很多程序开发者的圣地,里面汇聚了海量全球顶尖开发者。你可以把它理解为编程界的知乎,当你有某个具体问题实在卡住自己想不出来,或者搜索不到答案时,可以考虑在这里提问学习。
Stack Overflow 中会聊各种编程语言,若你只想了解或学习 Swift,可以在搜索标签中输入 Swift 来限定答案范围。
获取:免费。直接访问 Stack Overflow。
可汗学院
可汗学院是个优秀的全面学习资源站,你在这里可以找到几乎任何学科的知识,其授课方式深入浅出,十分易于理解。这里的课程虽并不针对于 Swift,但是任何编程基础很大程度上都是通用的,基础扎实了会让你的后续编程学习更轻松。
获取:免费。直接访问 可汗学院编程入门。
Ray Wenderlich
Ray Wenderlich 是一个专注于 iOS 开发的学习平台。早些年以出文字教程书为主,文字教程包含了 iOS 动画制作、Core Data 数据管理、SceneKit 游戏开发等,若你喜欢以读书的方式学习,这些书不失为非常优质的选择。
最近几年这个网站转型同时做视频教程,视频内容涉及 iOS、Swift、Game Framework、算法等与 iOS 开发相关的方方面面,每个视频均短小精致,很适合短时间速攻某个领域。
获取:视频课程 $19.99/月,图书教程每本 $60 左右。直接访问 RayWenderlich 网站。
Lets Build That App
Lets Build That App 是一个个人开发者创建的,用于分享 iOS 开发经验的频道。你可以在这里了解到个人开发、职业选择、薪资待遇等信息。
获取:免费。直接访问 Lets Build That App Youtube 频道。
哈佛大学:编程理论 CS50
若你希望接受系统性的编程教育,这节年年火的课程很值得你学习。这节课讲师懂得循循善诱,课程专注于讲解编程中在不同场景下所需要的各种知识,比如数据结构、动态编程、SQL 等。
CS50 目前除了本体课外,额外提供两门分支课程,分别是「CS50:了解科技」和「CS50:面向商业学科」,你可以根据自己的实际需求作出选择。
获取:免费。可以直接在「iTunes U」应用中搜索到,或点击此链接查看课程信息 CS50。
斯坦福大学:iOS 开发课 CS193P
若你希望系统的学习 Swift 应用程序开发,CS193P 非常值得考虑。其讲师 Paul Hegarty 曾任乔布斯 Next 公司的高级软件工程师。这节课讲解的全是应用程序开发中所需的硬核内容,比如 MVC、Controller、Core Motion、Segues 等等。
获取:免费。可以直接在「iTunes U」应用中搜索到,或点击此链接查看课程信息 Developing iOS 11 Apps with Swift。
写在文后
坦白说,学习编程很难,创作应用也很难,你可能会花几个小时卡在某个小问题上。但它终究它会慢慢简单起来,渐渐的,写程序变得像是在解决一块拼图,痛并快乐着。
将你精心创作,饱含成就感的作品分享给世界,也许正是编程的乐趣。善用学习资源,你也可以成为 iOS 独立开发者。
我觉得 学会一个东西最快的方式是边学边干 花几个月做一个小app 就学会了
曾经自学iOS开发一个月捣鼓出来一个简单的日程管理APP
https://itunes.apple.com/cn/app/lean/id903615490?mt=8,发布后几天鬼使神差地进入了App Store的推荐榜,获得了不少好评。本人算是多年的程序员,不具有代表性,只是回顾一下当时的学习经历,仅供参考。
入手第一台Mac后(至今后悔为神马快到晚年了才入手),就想着试水一把iOS开发,老婆说希望找个好用的Todo管理APP,心想就拿一个简单的Todo应用祭旗吧。
我上来看的是Standford的iOS教程,不太喜欢看视频,基本拖着过,主要看配套的讲义,视频主要目的当是练听力。当时还是Objective-C的版本,OC语言看的是官方文档,适应一下函数调用语法,Category、Protocol和Block几个概念要了解下,一两天就差不多了,开发过程中逐渐适应就顺手起来了。
这中间很大一部分时间,是在琢磨交互的设计,自己那段时间对交互设计也比较感兴趣。下载了大部分流行的Todo App来研究,重点考虑了自己的单手操作习惯,这也是后来能进APP Store推荐榜最主要的原因。
动手前,考虑过一个问题,就是StoryBoard,XIB和纯代码UI,选择哪种方式。看了几篇博文,也想到StoryBoard是苹果目前主推,就直接StoryBoard了。
从UITableView开始搞起,先整出来一个最简单的Todo的列表。发现没有checkbox控件,就搞了个基于图片的实现,学会了怎么基于StoryBoard来搞自定义的UTTabelViewCell。
接下来导航进入一个具体Todo需要Navigation Controller了,中间尝试了几种View Controller之间传数据和返回数据的几种方式。通过Delegate,通过Notification Center,写Segue相关的回调实现,在StoryBoard中设置,直接API调用,等等,多试几种方式以及相关的组合,基本对视图怎么跳过来跳过去的就了然于心了。然后学微信的样子搞了个Tab View Controller把几部分内容装起来。
花时间最多的是手势的操作,参考一些APP的之后,自己设计了一套操作手势。读官方文档,基本把UIGestureRecognizer搞明白了。然后上Github去找与我想法类似的库,没有特别符合要求的。后来自己参考了一个开源库代码,做了大量修改,实现了想要的手势操作。在过程中,对手势操作以及OC语言本身都掌握得比较熟练了。
数据存储是Core Data,看Standford教程,读文档,业务模型很简单,在StoryBoard中可视化地拉了两张表,基本就搞定了。
比较坑的是NSFetchedResultController,因为Todo的拖动、排序和编辑等操作和Table View默认的操作是完全不同的,各种错误,StackOverflow上的帖子翻遍了,搞了几天解决不了,遂放弃,自己封装了一层跟Table View交互的数据层。
尝试了加一些小的动画效果,比如Todo更新后闪动一下之类的,UIAnimation就够了。然后用NSUserDefault保存一些细节信息,这些信息对于交互上的一些小改进其实很有作用。然后是调整一下代码细节,优化一些View的显示。
然后做了代码重构,主要UITabelViewController,把MVC三部分代码做了更好得分离,也将一些公共抽象提取出来作为protocol,对代码设计基本就还算满意了。这段时间发现了
https://www.objc.io/这个网站,很有帮助。
之后就是找了一个好朋友帮我画了一些图,做了icon,基本就算完工了。
第一次提交被拒了,因为app网址随便填了个我们学校的网站,太随意了。第二次改成老婆的微博地址,然后就通过了。从开始学习iOS开始,刚好一个月时间左右。
上线后几天就是打开itunes connect之后,突然发现用户增加了近万,发现竟然进了推荐榜,最高的时候一度在效率榜排进几,貌似12306的APP就排在我的旁边,不过过了一周就没落了,哈哈。
后来其实花了不少时间,要做第二版。增加了提醒,云端同步,即时通信,好友管理等一堆功能,大部分都做好了,都还有一些需要完善的地方,一直没有提交。因为做其他事情没有时间,暂时搁置了,等哪天有时间有心情的时候,再重新捡起来把。
后来为了写一个iOS教程,就用Swift开始重写这个APP,不过也半途而废了,没完全写完,而且Swift语言也更新不少,内容也应该需要一些更新。越来越感概木有时间编程了。有兴趣的同学可以看看:
iOS应用开发 | 天码营已经写完的内容包括:
第1课
环境准备第2课
Swift基础第3课
Swift作业解析第4课
UITableViewController第5课
自定义的UITableViewCell第6课
MVC第7课
App的生命周期第8课
协议的使用第9课
理解可选类型第10课
UIViewController和UINavigationController第11课
Segue与数据传递第12课
Unwind Segue第13课
通知中心NSNotificationCenter第14课
日期选择器UIDatePicker第15课
XIB的使用第16课
可选(Optional)协议第17课
Core Data第18课
NSFetchedResultController第19课
细节优化的小技巧第20课
UITabBarController第21课
作业详解与回顾(1)第22课
作业详解与回顾(2)第23课
分页和UIActivityIndicatorView第24课
UIGestureRecognizer入门的姿势应该简单点。
有人打算考托福,会花大量的时候做准备工作,买书,下载音频,加入各类群。没多久就把热情消磨掉了,难正儿八经的单词却没开始记几个。
比准备更有效的入门方式是,简化步骤,马上开始。
对于入门者,不需要其他资料,官方文档是最好的起步石,系统的阅读一遍,再找个 app,临摹几个简单的页面和功能,比什么书,什么课程都更实际,更有效。
1、别人学1个月就能做APP,你也许10年都看不完一本入门书。
2、别人拿30K一个月,你可能3K都没人要。
3、能买Mac,就买预算内最贵的。
4、不要自己折腾配件。
5、配件升级顺序:内存(8G起步) -> 存储(SSD 256G起步) -> CPU -> 显卡
6、买不了Mac,就自己黑一个:
VM10装Mac OS X 10.9.3及更新到Mac OS X 10.107、赶紧买书看书看视频:
斯坦福大学公开课:iOS 7应用开发8、有任何学习上、工作上的问题,都可以问。但不要在线等别人答,赶紧自己去搜索。
9、能用Google就用Google,不行就百度。不要只搜一次,阅读了解部分信息后,增加或修改关键词继续搜。
10、多用专业网站的站内搜索,或者Google/百度时加”site:”。
11、实时请教是最低效的,多看书多看博客多看问答社区多搜索。
12、多参加技术沙龙,熟悉自己谋生的技术圈子。以防万一,带本书出门。
/*****************************************************2015.02.22 更新***********************************************/
因为这个问题很多人来问我iOS具体的学习路径或者培训班的情况。我在回答过一些同学的问题后,意识到你们最终目的是想学会iOS然后找到一份工作。而培训班或者自学都是一个比较漫长的过程,至少3个月以上,而且还会付出很多金钱和自己的时间,甚至中断一段时间自己的正常生活节奏,承担的风险也太大,而像我这样的经历,我现在回想起来也觉得不是值得借鉴的,至少对于单纯想靠iOS学习找到一份工作的同学来说,我觉得最多当个参考,有个具体的认识就好。
今天回答一个同学关于培训的问题的时候,突然想到我转行后找到的第一家公司,同样有个和我一样转行的同事,之前在一个小城市当老师,半年后果断辞职,来成都用了两周时间面试并被录用,之后在公司先看一个月iOS开发的书,然后跟着别人做项目,最开始写最简单的界面,三个月时间就算iOS开发入门了。2014年三月份去了深圳,现在也在一家比较好的公司。
所以不管自学也好,培训也好最终目的都是要去公司上班做项目,而且培训和自学出来同样需要到公司去经历项目才能算真正成为iOS初级开发者。很多时候我们做选择的时候以终为始该怎么选就很清楚了。我同事的方法就直接省去了自学和培训的时间,也不用脱产,这是我现在想到的最快速和具备可操作性的方法了。
但是这样也需要前提:
1.他之前C语言基础比较好,面试的时候C语言的笔试题全对,所以老板才要的他,所以你本身就要有一定的计算机理论基础和编程基础。
2.有的公司,比如我之前那家外包公司会专门找还没毕业的相关专业实习生,一般一个月时间就可以上手跟项目了,但是工资不会高,也不会转正,但是只是攒技能点去的话,努力学几个月等到自己技能点攒足了走就行了。他想要廉价劳动力,我们想要技能点,也不亏。但是这种公司我当然非常不建议去,因为学到最基本的东西后剩下都是重复的体力劳动,非常辛苦不说还对个人成长不好。只是作为转行来说算是一个选择。
3.自己想要在三个月内就完成iOS语法学习到能参加项目,需要个人非常努力。
这三点具备我觉得这条路才可行,希望有同学看到后能带来一点启发和不同的视角。
/*****************************************************2015.02.22 更新***********************************************/
我是一名iOS开发者,自己从零完全跨行自学iOS开发。已经做了很多项目,现在呆的公司马上独立完成第二个项目了,算一个中级iOS开发者了吧。现在的待遇在同样工作经验的人中算中上的了,我为什么说这么多呢?因为这个问题其实光一篇文章真的能起到的作用很少,我非常明白刚开始学的时候那种无头苍蝇一样的无力感,我现在在成都,周末一般都有空,所以可以当面聊一聊,问问你具体情况给出一些学习路径建议和一个对iOS技术大体全面的视角。因为我当初自学时也受过很多人的帮助和鼓励,所以没有任何回报要求。
首先声明,回答不求全面,只介绍下自己的经验。
本人情况,正规大学计算机专业毕业,有语言基础和计算机理论基础。仅仅是基础。
2014年6月份毕业,工作三个月后辞职开始自学ios。选择ios的原因有几点:
1.手头有台mac,不用额外购买电脑。
2.ios平台看起来比较漂亮,同时机型较少,好适配。
3.行业薪资ios比安卓要高一些。
4.开发语言是oc,有c语言基础比较好学。
个人感觉电脑只要是mac,什么型号并不重要,因为前期的代码量和程序规模并不需要强大的性能,所以尽管买最便宜的就好,不要被mac比较高的价格为难。上班后公司一般都有pro使用。另外苹果手机也不是必须,模拟器足够用,账号也不是必须,资金拮据可以考虑省下这部分钱。
入门先从最基础的oc语法学起,可以买一本oc教材,然后下载网上的oc课程视频,边看边敲,不懂得查书,不要只看书,我们不是为了应付考试。这样一遍下来,对oc语法应该了解差不多了。这时不求全部理解,大部分概念有就可以,实际用到的时候不懂可以回来查,更可以加深理解。这个阶段一到两个月。
有了语言基础,可以进一步接触cocoaTouch框架,做一些简单的界面,很有成就感,可以激励自己学习。这时同样可以看网上教学视频的进阶版,一般是把大部分控件的使用讲一遍,然后仿照比较流行的app学习混合使用。这其中会穿插一些coreFoundation的知识,都是这个系统最基础的东西。这个阶段两个月左右。
再进阶学习网络部分以及动画第三方等等,其实有前面两部分的基础就可以去工作了,因为最基础的东西学完,别的进阶的可以随用随学。我目前还处在第三阶段,还有很多不懂的,不过不影响工作,工作也是学习的过程,同时能接触到更多自学过程中接触不到的内容,比如很多成熟的第三方框架,比如app架构等等。这个阶段两个月到不知道多久。
总得来说,对于没接触过的大部分人来说,从入门到可以去参加工作,需要5到7个月的时间,基础好学的快的三四个月,一般培训班是4个月时间,培训费用加生活支出应该要两万大几。自学如果没有电脑支出的话,费用大概1万。
还有关于学习资料,首选国内的热门教材,不要读英文资料。我英语很好,但是非要看文档的话,也是头大,会让自己失去兴趣。可以用教材和阅读博客结合的方式学习内容,学的东西一定要用,否则没有任何意义。等入门了懂原理了,再去学习的时候,再去考虑文档和英文资料,这些资料还是很有价值的。
总之,不要好高骛远,踏踏实实按计划来。不求所有东西都吃透,但是至少保证能用学的知识做出东西来,并能解决发现的问题。这样不断的工作学习,经验多了,了解的东西多了,慢慢就会成为初学者眼中的大神。
这个行业薪资水平还可以,我现在所在的杭州,一年工作经验大概在10k,两到三年熟练的15到20k,四五年经验能带项目的20到40都有,所以薪资还是很诱人的,第一次感觉到时间就是金钱。想想这样学下去,一年之后每个月能比现在多挣1万,动力是不是多了点呢?
-------------------------------------------------------
设计模式:
iOS Human Interface Guidelines: Designing for iOS 7, MVC
内存管理:
Grand Central Dispatch (GCD) Reference楼上的答案都说的比较完全了我来总结补充一下
0. Prerequisite
英语!
1. 平台
首先一部Mac电脑是必须得,装虚拟机的话性能确实不保险。性价比就选Air或者iMac。个人认为Macbook Pro是编程比较好的选择,兼顾便携性和性能(打超极本脸妥妥的!)
然后下载Xcode就行了。
想要真机调试的话可以买苹果账号(99$$)一年或者在淘宝买真机调试证书(30¥左右)
2. Swift or ObjC
语言的选择是随你的。具体的话可以搜一下。但不管你学Swift还是ObjC,iOS的基础都是Cocoa Touch SDK,语言只是实现SDK的工具,例如TableView(列表显示)的类的方法在Swift里面是:
func cellForRowAtIndexPath(_ indexPath: NSIndexPath!) -> UITableViewCell!
而在ObjC里面是:
- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath
看得出来框架是没变的。
再补充:ObjC是被称为最不像C的基于C的语言,learning curve会比较长一点,特别是这几年Apple扩充了很多语法。 Swift简单易用,但习惯起来个人觉得不好用。基于现在针对ObjC的教程更多,可能先学习ObjC比较好
3. iOS
真正的iOS的东西到现在才开始,步奏和楼上说的大致相同
A. Stanford的CS193p课。能在iTunes里面找到属于iTunes U。全英文课程,我不知道网易公开课有没有翻译但iTunes U里面是有英文字幕的。 这门课涵盖了很多iOS的知识并且做了很好的演示。而且有很多容易犯错的地方老师会强调,例如scrollView必须设置contentSize才能用。属于一个很好的入门课,看起来可能会比较吃力但是一定要跟着一节课一节课搞懂,最好能徒手写出他上课做的Demo。还有,课堂开始讲的理论知识是比较无聊但一定要认真听! 比如Delegate是什么,Core Graphics的注意事项再到Core Data的基本概念。
B. Ray Wenderlich网上的教程。真的很有用,几乎涵盖了iOS得各个方面,从Core Foundation到Core Graphics到Core Bluetooth到Core Location再到Core Data。各个高级一点的框架入门靠他总没错的,而且教程全是step-by-step浅显易懂,每一次该code都会有讲解。有些教程有官方中文版,不过大多数也都有民间翻译版。贴个图感受一下
但重点任然是不能跟着写点code就算了,要理解
C. GitHub的开源项目,这个就不多说了,里面太多好的项目了例如AFNetworking,Mantle,ReactiveCocoa,看看这些项目是怎么写出来的
D. 文档。苹果官方文档绝对是最好的教材,里面会很详尽的讲你怎么使用一个类,比如所会告诉你怎么往蓝牙写东西:
[peripheral writeValue:dataToWrite forCharacteristic:interestingCharacteristic
type:CBCharacteristicWriteWithResponse];
但你如果不看的话就很难知道在peripheral这边还要有一个
- (void)peripheralManager:(CBPeripheralManager *)peripheral
didReceiveReadRequest:(CBATTRequest *)request
我理解全英文文档确实很难读,但是用一个类之前仔细读绝对有你意想不到的好处!还有就是每个重要的Framework都有苹果官方的示例App
4. 杂事
有问题问StackOverFlow,英文很重要
Provision、Certification一定要会一点(除非你不发布)
多看WWDC Session Video
上CocoaChina看看
如果想独立做App,遇到困难不要退缩,写出来收获往往很大
Code Regularly
ObjC和Cocoa Touch的很多特性类似于Category,Block,ARC (Auto Reference Counting)还有ViewController Life Cycle这些都要搞清楚
就酱,一两个月就能写出自己的App并且上架了
我就是学的 Stanford CS193 iOS7开发。
那个老爷子讲得特别好!激情负责任!
而且讲义实在是太用心了!简直是手把手!
至于更详细的你直接看排名第一的那个答案吧,我其实是红领巾。
链接: https://pan.baidu.com/s/12oCaKulfAl1ZfGYXc3HG2A 提取码: 7v6m
这是我千辛万苦搜集到的资料,视频有英文字幕!!!!
(在百度云上面预览是看不到字幕的 :( 可能是视频格式的原因 下载下来就可以看到英文字幕了。 )
=====
不够我没看到楼主强调设计模式、内存管理。。我以为就是入门 : (