当前位置 博文首页 > weixin_34198881的博客:【转】iOS 开发怎么入门?

    weixin_34198881的博客:【转】iOS 开发怎么入门?

    作者:[db:作者] 时间:2021-07-03 09:26

    原文网址: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应用都是由这两种视图搭建,吃透了它们那可玩的花样就很多了,其乐无穷。