原文网址:http://www.zhihu.com/question/20264108

iOS 开发怎么入门?

请问有设计模式、内存管理方面的资料吗?最好有除了官方文档之外的其它内容,
10 条评论
分享

按投票排序按时间排序
92 个回答

543赞同反对,不会显示你的姓名
郝健宗,曾经的注册会计师,如今鹅厂iOS工程师
唐鑫敏、Marcel Ning、Evasto 等人赞同
------- 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,这个过程当中自己自然就会去找答案、找材料、解决答案啦。
希望能帮助到跟我一样初学入门的朋友。
编辑于 2015-07-22 57 条评论 感谢
分享
收藏 • 没有帮助 •
举报
• 作者保留权利
3736赞同反对,不会显示你的姓名
Franz Fang,iOS 开发工程师
李高伟、刘其润、CMmoo 等人赞同
反对以上所有答案。

我反对理由如下:不管是斯坦福大学的CS193p公开课、苹果官方文档、绝大多数市场上庞杂的教学书籍都不是很适合入门同学看,想入门的话应该选用学习成本最低的方法,从最最基本开始讲起,并不是一味的讲解语法与知识,而是一边实践一边学习知识才是最好的学习方法。

并且我想告诉题主,你问的是iOS 开发怎么入门,但是你补充说明里说道的设计模式、内存管理等内容暂时不用你关心,等你真正iOS入门了以后在研究吧。也许我可以这么定义你的问题:

一个略懂编程的人并且完全没有接触过IOS开发的人想要学习IOS开发应如何学习?

--------------- 2015.5.15 更新 --------------
增加了怎么在Github上找优质OC项目
动画效果推荐的教程
部分段落重新组织了语言

(一)objective-c语言开发iOS应用

为什么不让初学者看斯坦福教程:我以为,斯坦福大学IOS公开课不适合入门的同学看,里面第一课讲解的就是MVC模式。对于一个刚入门想要学习的IOS的同学可能就完全懵了,心里想:“我特么第一课都听不懂我后面还学个P啊”。如果以前没接触过面向对象的语言学习的热情肯定大打折扣。
为什么不让初学者看苹果官方文档:我还以为,苹果官方文档的内容虽然权威但example对初学者一点都不友好,而且个人认为中文译文翻译不是令初学者很容易理解。初学阶段,教程的易理解程度我认为是非常重要的一点。(实在要看请看英文原版。)

我不否认以上两者是极好的学习材料,如果你入门了iOS开发并且有一定的英文功底,我是非常推荐你去看的,尤其官方文档,应该经常翻阅。但是我认为保持学习的热情是最重要的。本着这个理念,我推荐的学习方法难度非常低,希望你们能满意。

第一阶段: RayWenderlich网站中的 The iOS Apprentice教程 (难度指数:※)
以上有几个答案提到了这个网站,但看什么教程没有细说,我在这里简单说说。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的环境比前几年好太多了,光凭借网上的资料是 完全可以的学得很好的,如果你连这点学习能力还没有我也不相信你将来能成为一个很优秀的工程师。而且你会发现在社会上一些互联网公司是拒绝接收培训班出来的人。

推荐入门书籍:
tips:以下所有书籍有英文版看英文版,有最新版看最新版

1、《Objective-C 程序设计》(难度指数:※※)

2、《iOS 7应用开发入门经典》(难度指数:※※)

3、《iOS开发指南-0基础到AppStore上架》(难度指数:※※※)

4、《iOS编程实战》(难度指数:※※※※)

这里面讲解的很清楚,后面甚至有简单的项目可以练手,这对于看视频教程看恶心的同学是个福音~你可以先做项目遇到不懂的再看视频。

这里我想多说一句,买iOS开发的辅导书千万别买过时太久的,我看以上有答案还推荐iOS4系列丛书呢...拜托现在都什么年代了,现在iOS8教程都要出来了,你iOS6的教程都过时好久了更别提iOS4了...对于新出的swift语言好多人难以选择不知道该学OC好还是Swift好。我个人建议现在学OC,一门新语言的诞生需要经过时间的考验与洗礼。等你学好了OC以后再看也不迟。

第三阶段及以后
到这个阶段你应该拥有了充分的自学能力,已经达到了入门水平。
这时候以下网址将成为你的家常便饭:
Github,StackOverFlow
如果你编程遇到困难,在StackOverFlow上面应该都能找到合适的解答。(前提是你英文不要太差)。Github上好多开源代码足够丰富你的眼界。如果你想成为一个iOS开发者的话这上面两个网站是你经常以及必须会用到的。

Github上怎么搜牛人们的项目:

想学一点UI的同学可以看:
1、iOS by Tutorials
2、design+code 网址:https://designcode.io/

想学一点动效/交互的同学可以看:
1、下载QuartzComposer及相关插件如Origami,教程: Quartz Composer学习

想学applewatch开发的同学可以看:
1、《watchKit》raywenderlich刚推出这个教程,英文版无译文。

进价书单:
1、《Effective Objective-C 2.0》(必看)
2、《Objective-C高级编程 iOS与OS X多线程和内存管理》
3、《iOS开发进阶》
4、《iOS Auto Layout 开发秘籍》

推荐博客及网站:
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开发者,技术同样非常强,目前似乎在百度知道任职。
等等...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》(难度指数:※※※※)
喵神的这本书网上就有售卖,请支持正版,绝对是不可多得的进价书籍,此书并非传统意义上的教程,是以tip的方式呈献给大家的。

等我想到再补充。以上。
编辑于 2015-05-15 191 条评论 感谢
分享
收藏 • 没有帮助 •
举报
• 作者保留权利
106赞同反对,不会显示你的姓名
aaaron7,人人都在内心深处,期盼着世界末日的到来
张Plus、Charrine、知乎用户 等人赞同
楼上的各位大神,已经从技术层面说得足够多得了,我来说点虚得把。

说白了,就是一个学习方法的问题,这点不只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要爽。
兴趣是最好得老师
勤造轮子
编辑于 2016-01-22 27 条评论 感谢
分享
收藏 • 没有帮助 •
举报
• 作者保留权利
738赞同反对,不会显示你的姓名
苏菲,公众号:SophieinTokyo 见过四大洋和北极…
kaixian、阿滔、安逸羊 等人赞同
感谢这个问题下给予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 Programming
C.苹果官方的界面设计指南。由于和开发本身关系不大,所以可以不必立刻学习。对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的行动是最重要的,没有他们,你很难保证持续的学习动力。
编辑于 2014-10-13 55 条评论 感谢
分享
收藏 • 没有帮助 •
举报
• 作者保留权利
78赞同反对,不会显示你的姓名
王杰,iOS开发者
Evasto、Marcel Ning、知乎用户 等人赞同
/*****************************************************2015.02.22 更新***********************************************/
因为这个问题很多人来问我iOS具体的学习路径或者培训班的情况。我在回答过一些同学的问题后,意识到你们最终目的是想学会iOS然后找到一份工作。而培训班或者自学都是一个比较漫长的过程,至少3个月以上,而且还会付出很多金钱和自己的时间,甚至中断一段时间自己的正常生活节奏,承担的风险也太大,而像我这样的经历,我现在回想起来也觉得不是值得借鉴的,至少对于单纯想靠iOS学习找到一份工作的同学来说,我觉得最多当个参考,有个具体的认识就好。
今天回答一个同学关于培训的问题的时候,突然想到我转行后找到的第一家公司,同样有个和我一样转行的同事,之前在一个小城市当老师,半年后果断辞职,来成都用了两周时间面试并被录用,之后在公司先看一个月iOS开发的书,然后跟着别人做项目,最开始写最简单的界面,三个月时间就算iOS开发入门了。2014年三月份去了深圳,现在也在一家比较好的公司。
所以不管自学也好,培训也好最终目的都是要去公司上班做项目,而且培训和自学出来同样需要到公司去经历项目才能算真正成为iOS初级开发者。很多时候我们做选择的时候以终为始该怎么选就很清楚了。我同事的方法就直接省去了自学和培训的时间,也不用脱产,这是我现在想到的最快速和具备可操作性的方法了。
但是这样也需要前提:
1.他之前C语言基础比较好,面试的时候C语言的笔试题全对,所以老板才要的他,所以你本身就要有一定的计算机理论基础和编程基础。
2.有的公司,比如我之前那家外包公司会专门找还没毕业的相关专业实习生,一般一个月时间就可以上手跟项目了,但是工资不会高,也不会转正,但是只是攒技能点去的话,努力学几个月等到自己技能点攒足了走就行了。他想要廉价劳动力,我们想要技能点,也不亏。但是这种公司我当然非常不建议去,因为学到最基本的东西后剩下都是重复的体力劳动,非常辛苦不说还对个人成长不好。只是作为转行来说算是一个选择。
3.自己想要在三个月内就完成iOS语法学习到能参加项目,需要个人非常努力。
这三点具备我觉得这条路才可行,希望有同学看到后能带来一点启发和不同的视角。
/*****************************************************2015.02.22 更新***********************************************/

我是一名iOS开发者,自己从零完全跨行自学iOS开发。已经做了很多项目,现在呆的公司马上独立完成第二个项目了,算一个中级iOS开发者了吧。现在的待遇在同样工作经验的人中算中上的了,我为什么说这么多呢?因为这个问题其实光一篇文章真的能起到的作用很少,我非常明白刚开始学的时候那种无头苍蝇一样的无力感,我现在在成都,周末一般都有空,所以可以当面聊一聊,问问你具体情况给出一些学习路径建议和一个对iOS技术大体全面的视角。因为我当初自学时也受过很多人的帮助和鼓励,所以没有任何回报要求,吃饭钱我给都可以。
编辑于 2015-02-22 65 条评论 感谢
分享
收藏 • 没有帮助 •
举报
• 作者保留权利
618赞同反对,不会显示你的姓名
知乎用户,少刷知乎多读书
fancyro、知乎用户、Marcel Ning 等人赞同
在答题之前,我要先感谢知乎上关于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,加群请注明知乎。

——————————————————————————

编辑于 2015-05-23 76 条评论 感谢
分享
收藏 • 没有帮助 •
举报
• 禁止转载
98赞同反对,不会显示你的姓名
Vincent Jac,All In Or Nothing.
Marcel Ning、刘彬、李思迪 等人赞同
------2016年2月24日更新------
更新内容:
1.更新了推荐书籍以及书本出处。

入门呢,先多了解下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,把Xib、storyborad搞搞清楚,特别是AutoLayout用好来也很重要。
4.NSNotifaication,怎么说,也是个大头,单独拿出来好好研究下。
5.手势。UITapGestureRecognizer、UIPanGestureRecognizer、UILongPressGestureRecognizer、UISwipeGestureRecognizer、UIRotationGestureRecognizer。
6.屏幕的旋转,这个坑要多走走才过的好。
7.Localizations
8.文件管理,Bundle、NSFileManager。
9.数据存储,UserDefault,KeyChain、NSKeyedArchiver。
10.ARC

iOS动画:
1.UIView动画封装
2.Controller 相关的TransitionStyle
3.CAlayer。

设计模式:
这部分内容研究,建议拿一些开源企业级框架进行学习。本人当时是哪BeeFramework上手,Bee框架算是很好的MVC模式学习框架了。XML UI + Signal的View构建方式也挺优秀的。不过可惜的是现在Bee已经不再维护了,所以就拿来学习吧。
1.MVC
2.代理模式
3.单例
4.观察者
5.工厂模式

单元测试:
1.单元测试基础原理
2.XCTest

开发技术之外的还包括:
1.项目版本管理:SVN、Git
2.项目包依赖管理:CocoaPods
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、VLCPlayer
2.图片:CoreGraphics、SDWebImage
3.音频:CoreAudio

网络交互:
1.NSStream
2.CFNetwork
3.NSURLconnection
4.NSURLSession
5.Json解析(model数据接收导致崩溃,多半在Json解析。)

架构设计:
1.设计模式熟悉MVVM等不同的分层模式
2.UML能够绘制和读懂常用模型图吧,可能科班出身的基本都问题不大。

应用测试:
还在为应用莫名其妙卡壳而苦恼吗,还在为找不到项目优化点而被产品同批吗?Instrument——你值得拥有。
1.性能测试:instrument(Timer、Allocation、Leak)

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

在开发环境与工程稳定方面,显然有这样的需求你也不是一只小菜鸟了。此时你对自己的项目有更高的追求了。
那么此时我们应该注意什么样的知识点呢?这部分整理,也是基于我司内部推行的一种Docker思想的整体企业级架构平台。平台集成了代码仓库、应用组建库、自动组件化应用打包。当时也去听了高焕堂老先生关于Docker思想的技术沙龙,感觉受益匪浅。真的开始融入到Docker思想后确实觉得有助于企业优化架构,并且我也完成了手头一个应用从传统架构到这种Docker架构的迁移,大概思路就是先将应用从业务上解耦,后进行组件化封装。通过Cocoapods的podspec进行本地组装,在传至平台组件仓库中打包供应用组装时使用。这个过程中用到了Git、Cocoapods、Jenkins的部分知识,因此多了一份工程框架方面的思考哈。

工程框架

1.包依赖管理:Cocoapods、SwiftPackageManager、Carthage。如果你为了添加一个依赖库,还在手动从Git上面下载,那么就该注意去使用这些包管理工具了。提高效率很多,并且方便团队开发时,快速构建项目框架。
2.持续集成:Jenkins。首先,你先发现了自己在开发过程中对于持续集成的需求,并且发现真的很累...那么此时你就该认真的思考如何通过工具完成这一烦躁的工作了。
3.数据安全:
3.1数据加密:Hash(MD5、SHA1、SHA265)、RSA、AES、3DES、Base63.
3.2HTTPS与SSL:做开发,必须要学会跳过HTTPS授权,iOS也不例外。
4.打包工具:Command Line Tools、xctool

开发环境

1.Xcode插件:Alcatraz(不说别的,那个会炸开打字效果就值得你一试)、VVDocument、KSImageNamed
2.git:SourceTree
3.SVN:Versions、Cornerstone。(讲真Versions比Cornerstone好用。)
4.开发者账号申请和管理:
4.1Apple Developer MemberCenter :证书(发布证书、开发证书、推送证书)、设备管理、配置文件管理
4.2iTurnes Connect:Appstore应用管理、应用上架审核检测、加急审核。
5.热门技术:
5.1支付:微信支付、支付宝支付
5.2社会化分享:微博、微信朋友圈等(此处推荐使用三方库:UMengSocial)
5.3即时通讯:XMPP、VoIP(不知道放这里合不合适哈,做过视频会议,网络电话的人都懂。)
5.4HTML5:虽然我很忠实于原生应用开发,但是H5确实有点可取之处的(举个栗子吧,你做数据图表UI显示时,还是H5给你提供的库最多!),大家不妨关注下Hybird App。

以上列出的大部分内容来自于日常开发,还有书本阅读 。
编辑于 2016-02-25 22 条评论 感谢
分享
收藏 • 没有帮助 •
举报
• 作者保留权利
9赞同反对,不会显示你的姓名
知乎用户,野生程序员
鱼牙y、草莓拿铁、李林蔚 等人赞同
我觉得 学会一个东西最快的方式是边学边干 花几个月做一个小app 就学会了
发布于 2015-05-26 2 条评论 感谢
分享
收藏 • 没有帮助 •
举报
• 作者保留权利
46赞同反对,不会显示你的姓名
知乎用户,I don't know JS yet!
知乎用户、程小轩、侃侃而谈 等人赞同
我就是学的 Stanford CS193 iOS7开发。
那个老爷子讲得特别好!激情负责任!
而且讲义实在是太用心了!简直是手把手!

至于更详细的你直接看排名第一的那个答案吧,我其实是红领巾。

iOS7_免费高速下载

这是我千辛万苦搜集到的资料,视频有英文字幕!!!!
(在百度云上面预览是看不到字幕的 :( 可能是视频格式的原因 下载下来就可以看到英文字幕了。 )

=====
不够我没看到楼主强调设计模式、内存管理。。我以为就是入门 : (
编辑于 2014-07-26 33 条评论 感谢
分享
收藏 • 没有帮助 •
举报
• 作者保留权利
24赞同反对,不会显示你的姓名
知乎用户,在杭齐国人
Kim Retriever、张乔然、程诚 等人赞同
首先声明,回答不求全面,只介绍下自己的经验。
本人情况,正规大学计算机专业毕业,有语言基础和计算机理论基础。仅仅是基础。
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万,动力是不是多了点呢?
编辑于 2015-08-11 20 条评论 感谢
分享
收藏 • 没有帮助 •
举报
• 作者保留权利
13赞同反对,不会显示你的姓名
李晨,互联网大叔一枚,营销/摄影
vnexus、Jackson、薛睿 等人赞同
第一步,学习开发语言Objective-C,熟悉Xcode。参考书《Objective-C基础教程》,书快看完的时候还需要补充一些关于面向对象的知识,一般计算机专业的学生都是在学C++的时候接触这类思想的。本参考书里也会有一些讲解,进一步的学习需要以后再去看资料,Objective-体现的是面向对象是一种编程思想,以后写代码的时候可以慢慢体会。学完《Objective-C基础教程》,就会对iOS开发中所用到的基础数据类有一个了解,这时候应该就可以写简单的无界面程序了。熟悉Xcode,比如项目的管理,各个按钮的功能,各种选项的设置,4.4之后的新特性等等。

第二步,学习iOS开发的软件运行原理,软件开发思想、规范以及一些苹果公司提供的常用标准UI(User Interface,用户界面)控件的使用方法。推荐参考书是《iPhone 4与iPad开发基础教程》,该书有中文译本,虽然不是最新的iOS教程(最新的教程应该是iOS7开发基础教程,但是该书没有中文译本,如果英文过硬,看这本书当然最好)。建议可以去看看这个教程:ios开发视频教程配合着可以看《IPhone开发秘籍(第2版)中文》这本书,把上面的工程全部敲一遍。

第三步,熟悉常用第三方控件。因为苹果本身开放性的局限,其提供的标准开发库会有一些功能局限,智慧的网友们开发了各种各样的第三方控件来实现他们想要的功能,可以使开发过程事半功倍。此部分为进阶学习内容,需要在掌握前两步内容的基础上展开。这一步主要是试用,学习第三方代码,要求阅读第三方开发文档以及代码多一些。可以与开发同时进行,边学边进行软件开发。

除了参考书,这里推荐一个网站“DevStore(开发者服务商店)”里面收录了很多的第三方服务,并且可以对同类的服务进行参数对比,能够很有效的找到你需要添加的服务。学习期间及后期做项目阶段都可以在这个网站找到相应的服务和配置过程,也可以在技术群367554077里咨询大神。

另外,斯坦福大学每年都开设iOS开发的公开课,从Objective-C的学习到最后的控件使用以及开发思想,架构的学习,都有涉猎,是很好的视频教程。网易公开课中有以往课程配中文字幕的视频,而最新的课程一般没有中文字幕,并且,该课程选择默认学生已经有C++编程基础,可能对于初学者会困难一些。视频属于公开资源,在搜索引擎上搜索斯坦福、iOS等关键字,即可找到相应资源。刚刚简单搜索了一下,优酷已经提供iOS7开发的高清视频专辑。

最后,无论学习哪个操作系统的编程开发,最关键还是要多多练习多写代码,多看源码/文档、多实践、多交流、多总结。

编辑于 2014-12-15 添加评论 感谢
分享
收藏 • 没有帮助 •
举报
• 作者保留权利
112赞同反对,不会显示你的姓名
利炳根,只读算法,微信:qingxingfengzi
知乎用户、知乎用户、Chaos 等人赞同
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.10
7、赶紧买书看书看视频:斯坦福大学公开课:iOS 7应用开发
8、有任何学习上、工作上的问题,都可以问。但不要在线等别人答,赶紧自己去搜索。
9、能用Google就用Google,不行就百度。不要只搜一次,阅读了解部分信息后,增加或修改关键词继续搜。
10、多用专业网站的站内搜索,或者Google/百度时加”site:”。
11、实时请教是最低效的,多看书多看博客多看问答社区多搜索。
12、多参加技术沙龙,熟悉自己谋生的技术圈子。以防万一,带本书出门。
编辑于 2015-03-10 18 条评论 感谢
分享
收藏 • 没有帮助 •
举报
• 作者保留权利
4赞同反对,不会显示你的姓名
wangheyun,攻城师,CODING
Jackson、沉沉的石头、沈飞 等人赞同
最好的资料就是ADC中的各种Guide Line,我看了很多第三方出版的书籍,发现还是只有GUIDE LINE最好,其中包括Memory Management Programing Guide,View/View Controller Guide
发布于 2012-05-31 添加评论 感谢
分享
收藏 • 没有帮助 •
举报
• 作者保留权利
48赞同反对,不会显示你的姓名
知乎用户,EE ENGSCI
知乎用户、Thiel、包公力 等人赞同
-------------------------------------------------------
设计模式: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并且上架了
编辑于 2014-08-04 11 条评论 感谢
分享
收藏 • 没有帮助 •
举报
• 作者保留权利
2赞同反对,不会显示你的姓名
DaveYang,Exp Physics@IUB@XMU
Yuria、Jackson 赞同
你先说说你想开发啥,我的经验就是看两个简单的例子直接上手干,不懂就Google,看文档,上各种论坛,等你学完各种语法什么的黄花菜都凉了
发布于 2015-08-14 添加评论 感谢
分享
收藏 • 没有帮助 •
举报
• 作者保留权利
2赞同反对,不会显示你的姓名
刘宇奇,iOS开发工程师
Jackson、没事别怕 赞同
iOS入门不是轻而易举,首先要有至少6000+人民币的air供开发者使用,有个测试机3000+的5S即可,门槛有些高,但投入了这一万块,但这才是刚刚起步。学习者必要大量的坚持,否则你的钱会打水漂。
发布于 2015-04-29 4 条评论 感谢
分享
收藏 • 没有帮助 •
举报
• 作者保留权利
2赞同反对,不会显示你的姓名
其实,iOS开发、你才是程序员,你全家都是
Jackson、沈飞 赞同
感觉你们说的好复杂

一、官方文档,不管能不能看懂,先吞下去再消化。
马上着手开发 iOS 应用程序 (Start Developing iOS Apps Today): 应用程序开发过程
二、国内iOS培训机构的在线视频。
我最近在看蓝鸥、千峰的视频。(更多的培训机构随便百度)
三、objective-C程序设计第四版(PDF),下载到手机里,随时看看。
遇到问题可以找相关的QQ群、请教他人。

iOS入门,如果没有C语言基础,最好还是学习、了解一下有助于学习objective—C。
发布于 2014-10-12 添加评论 感谢
分享
收藏 • 没有帮助 •
举报
• 作者保留权利

路人乙小明,宅,伪Geek,前泌尿外科医生
Jackson、知乎用户 赞同
想起来好久以前答过这个题。
那啥,最近发现swift好好用,真的好好用,cs193p最新的针对swift开发ios的教程已经优化了不少,觉得看起来比之前针对obj c的要好,不过也可能是最近对面向对象编程稍微懂一点的缘故。总之如果最近开始学的,建议直接上swift。swift的参考书应该不用买,直接用苹果官方钦定那本就好,ibook免费下,cs193p的阅读作业也是用这本

以下是原答案
big nerd ranch的obj c编程很好,看斯坦福视频前必读
另一方面,big nerd ranch那本书好像是xcode 4时代的了,看到ios程序开发那的时候就应该结合视频了

obj c需要c作为基础,c的话,就算大学学过,我觉得还是要跟着书重温一下的,还是那本书,该讲的讲到了,入门用不到的基本不说。

obj c基础的章节可以让你对面向对象编程有一定的认识。单独这么说有点玄,不过现在自己也只能是一知半解,只能说有句话对我触动很大

在面向对象编程里面一般不会直接操作一个对象里面的变量,而是通过对象的方法,告诉对象做什么,剩下的让对象自己做

原文记不得了,按印象说的。

书看的差不多了才好看视频。不大懂的时候看书比看视频省事的多。事实上斯坦福的ios开发也不是面相初学者的,而是要求参加课程的人有编程基础,学过面向对象编程的,所以不要怪人家一上来就mvc
编辑于 2015-11-02 2 条评论 感谢
分享
收藏 • 没有帮助 •
举报
• 作者保留权利
5赞同反对,不会显示你的姓名
知乎用户,码农一只,私企小职员,守序善良
钟翔、xiao liu、火人 等人赞同
首先你得有一台Mac,

然后你得去注册一个开发者账号。
编辑于 2015-03-18 1 条评论 感谢
分享
收藏 • 没有帮助 •
举报
• 作者保留权利
9赞同反对,不会显示你的姓名
知乎用户,不算是个程序猿
Jackson、王鹏、关中阿飞 等人赞同
有点编程基础的话(大学计算机相关专业或者辅修过计算机,or others)
iTunes U 最近新开了 Developing iOS 8 Apps with Swift,还是斯坦福的白胡子大叔讲的CS193p,Winter 2015,iTunes上自带英文字幕,现在出了4课。

转载于:https://www.cnblogs.com/wi100sh/p/5258344.html

【转】iOS 开发怎么入门?相关推荐

  1. iOS 开发怎么入门?

    2017.5.22更新. 这次答案的更新主要想把此答案 ------------- 原文 ------------- 反对以上所有答案. 我反对理由如下:不管是斯坦福大学的CS193p公开课.苹果官方 ...

  2. iOS开发ARC入门和使用

    本文部分实例取自iOS 5 Toturail一书中关于ARC的教程和公开内容,仅用于技术交流和讨论.请不要将本文的部分或全部内容用于商用,谢谢合作. 欢迎转载本文,但是转载请注明本文出处:http:/ ...

  3. IOS开发之——入门

    前言 目前主要的移动开发平台有:Android.iOS.WindowsPhone,前两者占据着绝大多数的终端应用,我们常说的移动开发就是指:Android和iOS开发.本位主要讲述IOS的开发. An ...

  4. iOS开发-Xcode入门ObjC程序

    元旦三天假跟妹子冷战一天半,剩下的半天觉得无聊,可以写点东西,折腾了下xCode 6.1,虽然iPhone6比较丑,但是不影响IOS在高端机上面的地位,ObjC是扩充C的面向对象编程语言.主要使用于M ...

  5. ios开发教程入门到精通

    第1集 初识macOS 点击观看 第2集 开发工具Xcode 点击观看 第3集 初识Objective-C 点击观看 待续-

  6. 【IOS开发】IOS开发新手入门--简单计算器实现

    编程语言基础:objective-c基础语法 编程工具:Xcode4.6 第一步:打开Xcode,选择下面的Create a new Xcode projectd 第二步:选中如图,点Next进入下一 ...

  7. 5个月iOS开发入门总结(C++转行iOS)

    前言:一个人写的ios转行总结,思路很清晰,值得学习 原文网址:http://www.cocoachina.com/bbs/read.php?tid-332587.html 啰嗦(请跳过) 8月5号左 ...

  8. iOS开发实现一个简易浏览器

    iOS中可以使用几个简单的控件实现一个建议版本的浏览器,输入网站的url,就可以进行上网.作为一个iOS开发的入门.具体步骤如下: (1)在Main.stroyboard中拖入几个控件,Text Fi ...

  9. C++转iOS开发5个月总结

    啰嗦 8月5号左右突然做出了来北京工作的决定,给北京同学了解情况时正好同学公司缺人,7号来面试了下,13号一早就来报到了.自己与iOS开发还是有些缘分,3月中旬到5月初在济南一家小公司做了不到2个月的 ...

最新文章

  1. java项目怎样强制删除手机缓存_Myeclipse清理项目缓存的几大方法
  2. ASP.NET Atlas学习团队建议收集
  3. 实现接口Controller定义控制器
  4. 临床重症医学数据库MIMIC、eICU、PIC介绍
  5. 05Prism WPF 入门实战 - Navigation
  6. thinkphp小技巧
  7. linux调度程序是根据进程的动态优先级还是静态优先级来调度进程的,LINUX内核面试题...
  8. 培训机构还能不能信任?
  9. python marshal loads failed_在Python中marshal对象序列化的相关知识
  10. RabbitMQ和Kafka的显著差异(3)
  11. linux设置自动关机命令,Linux怎么用命令设置自动关机
  12. android 最新微信红包,GitHub - lthis/WeChatLuckyMoney: 微信抢红包插件 for Android
  13. 小数分频器vhdl实现_verilog 实现小数分频(小数分频器)代码
  14. 核心指导网络由任务编码器_如何在现实世界中与实际用户一起指导您的编码和编码生涯...
  15. 网络营销决胜武器——软文营销实战方法、案例、问题
  16. 《Web全栈工程师的自我修养》浓缩笔记(上)
  17. 玩转星际争霸局部战斗 —— QMIX
  18. 计算机一级考试选网络题广东,广东计算机一级考试试题及答案
  19. 用Python+小程序实现诗词大会的飞花令 !
  20. identity和assigned 的区别

热门文章

  1. poi导出word与excel模版
  2. 从零开始学平面设计,从零开始学平面设计难吗?
  3. ipython安装教程-ipython安装避坑指南
  4. Debian10安装python3
  5. 经济地理学复习要点总结(完整)
  6. pygame实现有趣的飞机塔防游戏,有兴趣了解一下吗?
  7. 测试:白盒测试(白盒测试是什么 白盒测试的优缺点 白盒测试中有哪些测试方法)
  8. RealNetworks CEO Rob Glaser 访谈录
  9. 【毕业设计】 python小游戏毕设 - 塔防小游戏设计与实现
  10. 六 linux用户,群组以及配置文件