扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
(1) 具备扎实的C , Objective-C编程基础 ,了解Swift.
创新互联主营王益网站建设的网络公司,主营网站建设方案,成都App制作,王益h5小程序设计搭建,王益网站营销推广欢迎王益等地区企业咨询
(2) 具备良好的编程风格和习惯(有一定的注释).
(3) 熟悉UI界面的搭建,复杂UI动画的实现.
(4) 熟悉5.0以后的Xcode开发工具,个版本的特性.
(5) 熟悉iOS的SDK,精通ios里面UIKit等核心框架.
(6) 熟悉MVC的设计模式,单利,Delegate,的应用和熟悉Notification消息机制.
(7) 熟练掌握MRCARC内存管理机制.
(8) 熟练使用AFNetworking,ASI,SDWebImage等第三方框架的应用.
(9) 熟练掌握XMLJSON(更常用)的数据解析.
(10) 熟练掌握NSThread、GCD、NSOperation多线程编程.
(11) 熟练掌握SQLite,FMDB等数据存储技术.
第一步,学习开发语言Objective-C。参考书看《Objective-C基础教程》这本书就行了。书看到后来还需要补充一些关于面向对象的知识,一般计算机专业的学生都是在学C 的时候接触这类思想的。我推荐的那本参考书里也会有一些讲解,进阶的学习需要以后再去看资料,没有特定教材,因为面向对象是一种编程思想,好在Objective-C本身就是这种思想的体现,以后写代码的时候可以慢慢体会。学完《Objective-C基础教程》,就会对iOS开发中所用到的基础数据类有一个了解了,这时候应该就可以写简单的无界面程序了。
第二步,学习iOS开发的软件运行原理,软件开发思想、规范以及一些苹果公司提供的常用标准UI(User Interface,用户界面)控件的使用方法。这个阶段推荐的参考书是《iPhone 4与iPad开发基础教程》,该书有中文译本,虽然不是最新的iOS教程(最新的教程应该是iOS7开发基础教程,但是该书没有中文译本,如果英文过硬,看这本书当然最好)。
第三步,熟悉常用第三方控件。因为苹果本身开放性的局限,其提供的标准开发库会有一些功能局限,智慧无线的网友们开发了各种各样的第三方控件来实现他们想要的功能,可以使开发过程事半功倍。此部分为进阶学习内容,需要在掌握前两步内容的基础上展开。这一步主要是试用,学习第三方代码,要求阅读第三方开发文档以及代码多一些。可以与开发同时进行,边学变进行软件开发。
最后,无论学习哪个操作系统的软件开发,最关键还是要多多练习,因此大量的写练习代码,看别人的优秀代码很重要。
学习ios开发已经一年多了。回想起来确实看了很多书。很多人都建议看文档,但是我是那种不太善于看文档的人。喜欢tutorial式的教程,不喜欢cookbook式的东西。因为我认为:一旦入门了,学会了,文档是用来查的,不是用来阅读的。当然,不同人有不同学习习惯,这只是我的个人看法。(最近学习bootstrap,没有很好的tutorial,只好硬着头皮看文档,其实感觉也不错。)
我是在ios5的时代学习的ios开发。虽然现在已经是ios7的时代了,但是我感觉了一下,感觉学习路径和我那时大同小异。我简单介绍一下我那时学习参考的书籍。希望对你有帮助。
1.
Sams Teach Yourself iOS 5 Application
Development in 24 Hours
Sams Teach Yourself iOS 6 Application Development in 24 Hours
我学习的时候只有ios5版本。这本书是我见过的最好的ios入门书籍,没有之一。概念介绍清晰(初学者不该懂的概念绝对不废话);实践性强;节奏适当。不夸张地说,这本书看了2/3,我已经能做一个app了。(当然功能有相对的局限性,而且还有一些细节问题需要解决,但主要在设计美工环节。事实上,我的第一个app就是完全看完这本书后做的。)
这本书的缺点只有一个:对于OC语言的介绍不够充分。如果之前没有接触过程序设计语言可能有点儿麻烦。但是对于有编程基础的人来说不是问题。如果遇到语言问题,可以和《Learn
Objective-C on the Mac》一起看。(见下介绍)
2.
Learn Objective-C On The Mac 2nd Edition
我忘记了我看的1st Edition还是2nd
Edition了。不过OC变化不大,没有影响。这是介绍OC语法的书。建议边学ios开发边看。我不建议一下子只扎进oc中,而弃ios
sdk不顾。
3.
Beginning IOS 5 Development
Beginning iOS 6 Development : Exploring the iOS SDK
我当时看的是ios5版本。事实上,我一上来就看这本书,后来发现这本根本不适合入门!因为在ios5的时代,这本书介绍的方法依然是ios4的(比如不用storyboard)!我有很多朋友都企图用这本书入门,但最后都失败了。但是我依旧建议看完《Sam》后看看这本书。因为介绍了很多更细节的东西,而且也很有用(比如用代码控制界面、控制界面的转移、包括Core
Data,Media相关的一些高级内容等)!在入门的基础上看完这本书,对ios开的理解能上一个层次。
4.Pro iOS Table Views : for iPhone, iPad,
and iPod touch
非常非常推荐的一本书。前面说的基础书籍对tableView的介绍是不够详尽的。但是tableView在ios应用开发中是非常重要的一块(至少我做的app都比较依赖tableView)。吃透这本书,tableView基本完全不成问题了。再次吐血推荐!(看完这本书,大多数应用类app都敢做了。)
5.
Beginning iPad Development for iPhone
Developers
虽说是一本介绍ipad的书,但其实看完sam加上自己的实践,制作universal的app不是什么难事。ipad也没那么特殊。不过这是一本非常好的介绍
ios
graphics
capabilities的书!这本书会带你完成一个简单的绘图app,之后你基本能够熟练地使用ios的graphics相关功能了。(注:和Quatrz;Cocoa;OpenGL
ES的Graphics不是一回事儿。)
6.
Programming iOS 5 : Fundamentals of iPhone, iPad, and iPod touch
Development
Programming iOS 6
非常厚。比之前介绍的书都厚。而且都是干货,所以读起来也慢。我当时看ios5版本。这本书比较全面地介绍ios。建议彻底入门了,甚至已经做出几个app了以后翻看。可以学到很多没有注意过的细节;或者没有用到过的features。虽是个大部头,但是强烈推荐。
7.
Pro Multithreading and Memory Management
for iOS and OS X : with ARC, Grand Central Dispatch, and Blocks这是关于ios多线程和内存管理的入门书籍。这部分内容比较深,其实普通开发者可以不完全理解这些机制了。尤其是ios5有了ARC之后。我基本翻完了这本书,但是对于其中的一些东西理解的不透彻(尤其是Multithread部分)。不完全推荐,但感兴趣的同学可以看看。
8.Beginning iOS Game Development
这本书非常基础。如果你已经入了门,读这本书简直轻而易举。我花了一个下午的时间翻完这本书。主要是想学习一下ios动画相关的内容。里面只有很少的几章涉及了相关内容,但是对于一些基本功能的实现已经够了。如果想了解更多ios动画的内容,还是需要到网上去找。我没有找到很好的图书资料。
这就是我完全看过的书。还有一些书觉得应该不错,但是一直没有时间看。而且等入了门,实践的动力远远大于看书学习的动力,所以查文档越来越多。希望能够帮到你,也希望能得到大家指正。
转载
基础
一定的编程经验
这里说的编程经验是至少熟练一门编程语言,对 OOP 有一定的了解,最好熟悉一些基本的设计模式。遇到过的好多 iOS 开发,大多是从别的语言转过来的,所以有一定的编程基础,学起来会更容易 get the point.
如果是第一次接触编程,当然也是没问题的,只是要做好心理准备,可能会比想象的难。
英语
发现不少开发对于英语似乎有点接受不能,通常都是中文优先,除非迫不得已,才硬着头皮看看 StackOverflow,英文文章,文档等。忘了是谁说过「难走的路越走越好走」,通常如此。其实只要稍微 push 一下自己,那些技术文章啃下来应该不会有太大的问题,有过几次成功的体验后,这种恐惧感就会减少很多。优质的文章、视频、书籍,多是英文的,不迈过这个 坎,将来要么成为瓶颈,要么花更大的成本去填补。
入门
书籍
要学习 iOS 开发,自然要先学 Objective-C (当然现在也可以直接上 Swift,不过如果多人协作的话,OC目前还是主流),因为 OC 是 C 语言的超集,所以了解 C 语言对于学习 OC 肯定会有帮助,不过就算不了解,直接学 OC 也没太大问题。
这里推荐 BNR (Big Nerd Ranch) 的这本 Objective-C Programming The Big Nerd Ranch Guide,讲解地比较细致,能帮助你更好的理解 OC,更重要的是教你遇到问题时,如何去解决问题,以及这个问题对应的一些知识点,如何使用文档等等。
来到一个新的世界,肯定会对这个世界充满好奇,想订阅一大堆博客,买一堆书,看各种教程和视频,然后就变得浮躁,不知该从哪下手,这会导致拖延症。 我渴了,给我倒一杯水,这个很直接,马上就可以做,但如果是给我买一瓶饮料,而自己对那些饮料又不怎么熟悉时,就纠结了,不如刷会微博,看看朋友圈,玩个小游戏先。
所以一本好的入门教材很重要,要契合自己当前的水平,且常常会有收获,这种成就感会激励着你继续学下去。
在看书的过程中,往往会有这样的经历:书中提到某个人、观点、知识点、书、文章,然后就顺着它提到的这些东西出去了,可能某个知识点又牵扯到另一些内容,然后就这样越走越远。想起了一个故事——
三只猎狗追一只土拔鼠,土拔鼠逃跑时钻进了一个树洞。这个树洞只有一个出口,不一会儿,忽然从树洞里跑出一只兔子。兔子飞快地向前跑,并爬上另一棵大树。兔子因为慌乱在树上没站稳,掉了下来,砸晕了正仰头看的三只猎狗,最后,兔子终于逃脱。
对于这个故事可以从不同的角度去解读,我更愿意以初心去解读。兔子为什么会爬树?为什么能砸晕三只猎狗?这不是重点,重点是,之前追赶的土拨鼠哪去了?看书时难免会有延伸阅读,这个深度我觉得不宜超过 2 层,不然很容易就回不来了。
还有就是如果有可能,最好每天都看点,这其实是很难的,因为总是会有优先级更高的事,或者之前的某些习惯在干扰。一旦断了几天,就不想再拿起来了。
还有,苹果官方的 Start Developing iOS Apps Today 也是很不错的入门材料。
视频
推荐斯坦福老头子(Paul Hegarty)的 Developing iOS 7 Apps for iPhone and iPad ,当初也是看的这个(那时还是更老的版本),Paul 是资深的 Mac/iOS 开发(前苹果员工?),很多知识点讲得很到位,学生们的提问也大都在点上,同时配有Demo,总之听下来会对 iOS 开发有比较全面的了解。
同时推荐一本小册子:objc-zen-book,花不长时间就能看完,里面是一些 Best Practices,对于编写优质代码会很有帮助。
笔记
这是一个持久的过程,任何阶段都适用。以前也没太在意这个,觉得概念性的东西,脑子过一遍,就大概知道了,然后就去啃其他的东西了,现在看来,如果有记笔记的话,会更有助于消化概念、知识点,也可以记录自己的思考过程。达芬奇就记录了10000多页的笔记。
记笔记可以加深对知识点的理解,而成为编程巨星的唯一秘诀就是:对所做的事情理解地越深,就会做得越好。同时如果遵循遗忘曲线去复习的话,效果更佳。对知识点了解地足够透彻后,Debug 时才更有可能知道问题出在哪,解决问题也更容易有思路。
笔记不仅可以记知识点,也可以记录调试过程,比如这篇笔记,有一种调试方法:小黄鸭调试法
许多程序员都有过向别人(甚至可能向完全不会编程的人)提问及解释编程问题,就在解释的过程中击中了问题的解决方案。一边阐述代码的意图一边观察它实际上的意图并做调试,这两者之间的任何不协调会变得很明显,并且更容易发现自己的错误。
生活中我们可能不会真的这么去做,这时抽离出另一个自己,记录下跟ta的对话,也是个发现问题的好方法。
练习
这也是一个持续的过程,知道了些概念或原理后,总是会想着去验证下是不是这样,无论结果是否如自己预期,实践的过程会降低对语言的陌生感,慢慢地培养一种驾驭这门语言的自信,如果出了错,正好可以重新梳理一下。
目标
如果静下心来看完了 BNR 的这本书,以及斯坦福的 iOS 开发视频,那么对 OC 应该比较了解了,一些常用的 UIKit 用起来也没什么问题了,比如 UIViewController / UIView / UIScrollView / UIImageView / UITableView。也熟悉一些概念,如 KVO / MVC / Delegate / DataSource。
这个阶段下来,应该会有:哦,iOS 开发也就这样嘛,多翻翻文档,熟悉 Cocoa Touch 的一些 Class,差不多也能做出一个简单的 App 了。
进阶
入门之后,接下来可以折腾的东西还会有不少。
书籍
Effective Objective-C 2.0,里面提到了 52 种提高 iOS App 质量的途径。涉及了 API 设计、protocols / category 的使用、写出更模块化的代码等,读下来应该会有不少收获。
iOS Programming: The Big Nerd Ranch Guide (4th Edition),又是一本 BNR 的书,这本书的特点是通过 Demo 来引出知识点,然后提一些问题,并且会细说解题思路。看书的过程中,对于元学习能力的提升也会有一定帮助。
--- update ---
发现巧哥的 iOS开发进阶 已经可以在京东买到了,虽然没有细看,但巧哥出品质量肯定有保障。
其他资源
进入这个阶段后,可以去探索更大的世界了,现在的资源已经很丰富了,但还是要遵循「少而精」的原则。以下是我觉得挺不错的资源
iOS Dev Weekly 每周一期,内容多为这一星期里值得关注的Github项目、文章、工具等。
iOS 移动开发周报 这是唐巧大大整理的每周不错的 iOS 开发相关的内容,多为中文。
RayWenderlich 很多详细又全面的教程,不容错过。
iOS Dev Slack 国内不少 iOS 开发(包括大大们)都在这里,不过现在好像不怎么能拿到邀请了。
中文 iOS/Mac 开发博客列表,打开工具订阅吧。
还有,如果可能的话,多去分享自己学到的东西,教是最好的学,我试过几次,效果真的很不错。
目标
这个阶段下来,对于常用的设计模式、内存管理、Blocks 的使用、图像操作、网络请求和管理、多线程应该比较熟悉了。对于 CALayer、Animation、UIScrollView、UITableView、UICollectionView、 ViewController Container 则非常熟悉,对「非常熟悉」的定义是:不打开 Xcode,脑子里就能把相应的知识点复述出来 80% ,比如这个类有哪些方法,Delegate / DataSource 有哪些方法,怎么使用,如果要实现某个效果,应该怎么做(好吧, UICollectionView 除外)。
高级
其实高级、进阶、入门并没有严格的界限,在入门阶段也可以探究高级阶段的一些东西。我觉得支撑我们不断探索和前进的动力不是兴趣,而是永不满足的好奇心,和对优雅代码的追求。
If your standards are low, you're going to stop pretty early on in the process.
BNR 的这篇 Leveling Up 已经讲得很好了,也更加细致。
书籍
iOS 7 Programming Pushing the Limits 这本书对 iOS 7 的一些特性会讲解地比较深入,当然也不仅仅是 iOS 7。只叹 iOS 更新实在太快,书籍往往跟不上,一本好书往往需要很长时间来撰写,等书可以出版了,iOS 又出新版本了。
源码
看优秀的源码,可以学到很多东西,使用过程中遇到问题也更容易解决。这些是我觉得值得细看的源码:AFNetworking(NSOperation, HTTP, Block), SDWebImage(Image Handle, Cache, NSOperation, Block),SVPullToRefresh(UIScrollView, State Handle), JSONModel(runtime)
如果有兴趣,也可以翻翻 CoreFoundation / OC runtime 的源码。
资源
oleb
NSHipster
objc.io || objcio.cn
WWDC 视频
工具
chisel Facebook 出品的 LLDB 助手,用于调试很方便
Reveal 每当好奇某个 App 的实现时,都会打开它一窥究竟,用于调试自己的 App 也很方便
Aspects steipete 大大出品的一款方便使用 method swizzling 的工具,可以在运行时动态添加代码到某个方法
class-dump 从 Mach-O 文件生成 OC 头文件,有时想看看某个 App 大概是如何组织的会比较方便
Hopper 可以对二进制文件进行反编译,甚至可以生成伪代码!有时想看看 UIViewController 里某个方法大概是怎么实现的,就可以用它。
Instruments 这个内置的工具对于发现 App 的各种问题很有帮助,如内存占用、泄露,渲染问题等。
目标
这个阶段,对于底层的实现会有更深入的了解,各种 Core 开头的 Framework 至少可以说出个大概,工具也能熟练使用,「正经的代码」写过数万行,可能天天在翻 Dash。如果别人让你实现某个功能,能在较短的时间内给出不错的实现方案,并且足够细致,甚至精细到如何使用 Core Graphic 去画某个图像。
其他
我觉得无论学习什么,「速成」的心态是最要不得的,这只会让自己变得浮躁,一知半解,整个过程也很难让自己的元学习能力得到提升。慢慢来,攻占一个城后,再去打下一个,这时心态也会平和许多。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流