黑马程序员技术交流社区

标题: 一篇很好的文章:一个iOS开发者的修真之路 [打印本页]

作者: dyb_10101    时间: 2015-4-17 11:05
标题: 一篇很好的文章:一个iOS开发者的修真之路
一起来看看iOS开发内门弟子给出的答案吧。这里大概归纳下。
Objective-C 语言:欲学iOS开发,必先学习Objective-C! iOS开发中用到的主要编程语言就是Objective-C语言,虽然也可以使用C和C++语言混合编程,不过Objective-C语言是最核心的部分。
核心iOS7类库
编程语言只是基础,真正的开发利器是iOS7的核心类库。掌握了Objective-C语言只是让你从一个普通人变成侠客,但是离真正的修真高手还有很长的路。从只懂得炼体的后天境界晋升到挥手间敌人灰飞烟灭的练气或者先天境界,就必须掌握核心iOS7类库。
其中又包括:
相机和microphone
社交网络与分享
CoreData数据持久化
Foundation,又包括Application loop(应用循环),Threads(线程),Networking(网络)。
MapKit,也就是如何使用地图
Passbook,也就是和移动支付系统的整合
CoreLocation,如何在茫茫人海之中找到你所爱的位置
Bluetooth,蓝牙模块,如果你要开发周边硬件设备,这是必不可少的
Notifications,消息推送,又包括Local本地和Push(APNS)推送
CoreMotion, 比如陀螺仪相关的东西
GameKit,和第三方游戏设备(手柄)相关的东西
SpriteKit,类似cocos2d的2D游戏引擎
第三方依赖库管理
晋升先天之后,一个修真者就脱离了低级趣味,成了修真队伍的真正成员。虽然自身对天地大道的感悟和修炼是根本,但如果有那么几件灵器、仙器甚至神器在手,无论是保护自身的护身法宝还是令敌人胆寒的攻伐之器,都可以让你在修炼的路上笑傲江湖。
对iOS开发者来说,善于借助第三方类库的强大力量来实现产品的各种功能,就如同修真者手持神兵法宝一般,无往而不利。神器法宝多了也不好办,所谓财不外露,拿着一大堆法宝在外面炫富是修真者大忌。这个时候一个能容纳万物的储物乾坤袋就成了修真者的梦想之物。好在有CocoaPods,它比修真者储物袋更神奇的是,你只需使用CocoaPods,就可以自动将各种优秀的第三方类库包含在项目之中。一个iOS开发者如果不懂CocoaPods,简直就是修真界的穷DS一枚。懂CocoaPods的iOS开发者不说立马晋升高富帅,起码也会成为中产阶层之一。
对CocoaPods的使用请参考这里:CocoaPods安装和使用教程
Xcode
修真者都喜欢天地灵气充足的修炼之地,iOS开发者也非常需要一个强大的开发环境帮助自己打理项目。
寻找一个理想的修炼之地对于修真者是奢侈的,因此大量散修选择加入各种宗门或学院,否则万难有出头之日。
对于iOS开发者则可以省掉这份烦恼,因为所有iOS开发者都可以免费享受最强大的iOS开发环境-Xcode 。
对于Xcode的学习又包括:
项目管理:包括文件结构,导航,Build 设置,属性列表等
代码编辑器:包括如何高亮,查找,自动完成,查看文件,Assistant Editor等等。
Interface Builder: 如今的Interface Builder(界面编辑器)是内置在Xcode中的,这部分又包括Storyboards和xib的使用,控件类型及属性设置,IBOutlet和IBAction,自定义类,Tag,视图文件结构等。
代码调试工具:包括lldb,断点,日志等
Instrumentation工具:包括内存泄露和CPU使用率的监控等。
Git版本管理:包括repository的管理,branching和merging。
详情请参考:
开发者工具概述
软件工程
修真者除了修身练气,还要炼神,也就是修炼自己的神魂。神魂的层次提高了,不光对自身的修炼有益,还可以控制其他修真者当自己的小弟,或者有节操点,吸引其他修真者为了自己的目标共同奋斗(比如一起探索某个神府)。
iOS开发者除了知道如何具体写代码,还要在思想上提升自己的档次,站在一个更高的角度看待项目的开发和管理。这个时候就需要了解一些软件工程的概念。
对于软件工程,需要掌握的内容如下:
应用程序的架构:比如模块化和SOA,逻辑封装等
敏捷过程:比如项目所有者和用户场景,迭代开发,高效沟通等。其中迭代开发步伐又包括测试和结对编程,CI和代码审阅,QA质量测试和调试。
项目管理:比如项目规划和评估,工具和文档化,Licensing等。
iOS开发者的神通功法1-Tests测试修真者乃逆天而为,其中所遇到的艰难险阻是常人难以理解和接受的。当自身实力到了一定的程度之后,就要承受天威的打击-各种雷劫,比如四九雷劫,六九雷劫,九九雷劫,飞升时的万雷劫。不管你自身实力如何强大,肉身如何抗操,元气如何充盈,神魂如何逆天,在雷劫时一不小心就会永坠轮回。在iOS开发时,不管我们如何努力熬夜,如何苦逼编码,到了测试的时候发现程序直接挂掉了,简直是亲者痛仇者呵呵的不可承受之重。

因此一个有经验的iOS开发者往往会采用测试驱动开发的思路。大概要学习的内容包括:测试类型:单元测试,功能测试,整合测试,性能测试,可用性测试,回归测试等。连续测试:continuous integration,自己去google

XCTest:Xcode特有的测试方法。

iOS开发者的神通功法2-Git版本控制:常言道,一人得道鸡犬升天。修真者在飞升之后往往会将自己的修炼资源留给家族后人或好友使用。一方面是因为基因的自私天性,另一方面则是因为希望通过这种方式让更多的追随者可以一同飞升,在更广阔的大千世界中可以携手打拼。

iOS开发的独行侠时代已经过去了,很多团队中的产品或项目开发是协同进行的,即便是纯粹个人开发,也经常需要用到版本控制工具。
因此,iOS开发者需要对Git版本控制有一定程度的了解。
具体包括:
版本控制系统:其中又包括分布式VCS,Branch,Merge,Diff
GitHub的使用:Fork和Pull requests
config: remotes和default behaviors。

iOS开发者的神通功法3—移动应用开发的独特性:凡人修仙,仙人修道,道人修真。后天期,先天期,金丹期,元婴期,洞虚期,空冥期,渡劫期,大成期。。。无论修真者处在哪个阶段,都需要针对特定的修炼阶段了解和获取所需资源。开发者也是如此,虽然Web开发,PC端应用开发,移动应用开发并没有等级之分,但各自却有了完全不同的特点。开发者需要根据移动应用开发的独特性掌握相应的知识:HIG(Human Interface Guidelines):人机界面交互,具体参考:iOS Human Interface Guidelines: Designing for iOS 7流量消耗的考虑:包含两个方面,一个是安装包的大小,另一个则是在使用过程中的流量消耗。多线程操作:比如上传下载文件之类比较耗时间的操作可以单独放在一个线程中,详细请参考:Grand Central Dispatch (GCD) Reference状态保存和恢复:让用户下一次进入应用时仍然进入此前所在的界面和状态。本地化:根据用户所在的地区选择对应的语言显示

iOS开发者的神通功法4—吸星大法-参考别人的源代码:无论是修炼武功还是修真,都有一个类似吸星大法的邪门功法,那就是把别人的功力占为己有。在iOS中,同样有这样一门强大的功法,那就是参考别人的源代码。比吸星大法更神奇的地方是,参考别人的源代码是双赢的过程,不会让别人的功力下降,反而让大家在切磋的过程中共同进步。

源代码的来源包括:
http://developer.apple.com中苹果官方的源代码;
http://github.com里面的源代码;
code4app,cocoachina等第三方网站中大家共享的源代码;
教程网站和其它第三方网站中的源代码(如http://raywenderlich.com等);
通过逆向过程研究别人的应用,这个有点高大上了

产品发布:修真者在漫长的修炼过程中,需要消耗大量的资源。这些资源除了家族门派储备,强取豪夺,各种奇葩奇遇之外,就只有靠剩余价值交换的形式了。比如炼丹师把自己的仙丹拿来换一门功法,炼器师把自己的法宝拿来换仙丹,有多余功法的修真者会拍卖功法换取能让自己修为一日千里的仙丹,等等。OS开发者(我承认这部分有点扯~),特别是个人开发者不是神人,也要食人间烟火。所以辛辛苦苦开发的产品肯定是要上线发布,让更多人使用甚至购买的(或者让投资人买单)。







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2