在微信上有童鞋问我iOS开发者的入门标准是神马?这个问题难到我了,并且贸然给一个答案出来的话,一定会有万千高手来喷。php
凡人修仙,仙人修道,道人修真。当咱们仍是一个在青石板上蹲马步汗水涔涔的废柴时,或许天空中偶尔会有御剑飞行的仙人路过。金色的阳光洒在仙人随风舞动的剑穗上,此时不由会油然而生一种冲动,但愿有一天能成为这样的高手,自由飞翔。只是路漫漫其修远兮,漫漫修真路,从一个后天废柴到羽化升仙成为大神须要太多的努力。html
我我的还属于iOS开发的外门弟子,正在入门的门槛上,因此仍是一块儿来看看iOS开发内门弟子给出的答案吧。ios
参考图详见pdf文档,这里大概概括下。git
Objective-C 语言github
欲练神功,必先自宫!除非是仙人转世,任何一个修真者都要从最基本也最痛苦的炼体开始。对Objective-C语言的学习能够对应修真者的炼体或者后天境界。通过后天境界的苦修,一个修真者能够轻松战胜几个普通流氓,不过当十几个甚至更多人蜂拥而上时,仍是赶忙逃命吧。 欲学iOS开发,必先学习Objective-C! iOS开发中用到的主要编程语言就是Objective-C语言,虽然也可使用C和C++语言混合编程,不过Objective-C语言是最核心的部分。编程
其中又包括:设计模式
面向对象编程基础(类和继承,变量和方法的做用域,MVC基本概念,分类)微信
方法和函数(消息,类定义和属性,与C/C++的混合编程)网络
内存管理(strong/weak, ARC自动引用计数,自动释放对象)多线程
代码设计模式(Block块语句,Target/action,协议)
UIKIT(视图层级,绘制事件,触摸事件,动画)
多媒体(配置,AVFoundation, C语言的API)
核心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 5
修真者都喜欢天地灵气充足的修炼之地,iOS开发者也很是须要一个强大的开发环境帮助本身打理项目。
寻找一个理想的修炼之地对于修真者是奢侈的,所以大量散修选择加入各类宗门或学院,不然万难有出头之日。
对于iOS开发者则能够省掉这份烦恼,由于全部iOS开发者均可以避免费享受最强大的iOS开发环境-Xcode 5。
对于Xcode5的学习又包括:
项目管理:包括文件结构,导航,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特有的测试方法。
关于这部分的内容详细参考:
Xcode Overview: Unit Test Your App
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等);
经过逆向过程研究别人的应用,这个有点高大上了。
真正的高手善于利用吸星大法迅速提高本身的实力,实在是居家旅行行走江湖修真者的必备功法啊。
iOS开发者的神通功法5—提升英语水平
一个修真者莫大的痛苦是,本身的面前摆着一门绝世神通,却TMD是火星文彻底看不懂?
对于iOS开发者(包括其它程序猿)来讲,若是本身的英文水平不行,就等于手握万千绝世神通却半个字都不懂。
因此,最起码要多花时间看看英文文档,教程,博客,论坛,没必要刻意去学,而是在提升本身iOS功力的同时提升本身的英文水平。二者相辅相成,相得益彰。
产品发布
修真者在漫长的修炼过程当中,须要消耗大量的资源。这些资源除了家族门派储备,强取豪夺,各类奇葩奇遇以外,就只有靠剩余价值交换的形式了。好比炼丹师把本身的仙丹拿来换一门功法,炼器师把本身的法宝拿来换仙丹,有多余功法的修真者会拍卖功法换取能让本身修为一日千里的仙丹,等等。
iOS开发者(我认可这部分有点扯~),特别是我的开发者不是神人,也要食人间烟火。因此辛辛苦苦开发的产品确定是要上线发布,让更多人使用甚至购买的(或者让投资人买单)。
所以一个真正的开发者也必须学会如何发布本身的产品,因此必须掌握如下知识:
设备测试:个人第一款iPad应用没通过设备测试你敢信?不过当时第一代iPad尚未T正式发布,是特殊历史时期的特殊作法,并且是获得苹果承认的。现在你这样作试试看?TestFlight: 就让身边的几个程序猿一块儿测测就算用户测试完成了?赶忙试试这个利器吧。
App Store发布:包括provisioning profile,code-signing,开发者入口,具体参考:
或苹果官方文档,由于具体作法常常会有调整。
好了,一个iOS开发修真者在有了以上的基础以后,在成为高手的路上虽然还会有诸多波折,但至少有了前进的方向,或者说有了指引。
修真之路最重心智开启和意志的磨练,无论采用何种方法,无论有着何种目标,若是意志不坚决,向道之心会受到美女,懒惰,娱乐等各方面的影响,最终中道而去。 你们一块儿努力吧。
参考:
https://www.codefellows.org/blogs/everything-a-competent-ios-developer-needs-to-know