简介:javascript
人天生就喜欢游戏,因此咱们要开发的第一款应用不会是苍白无力的”Hello World”,而是一个小游戏,名为Bull’s Eye(拖拖看)。虽然这个游戏很是简单,但若是你从未接触过编程,可能仍是会遇到一些困难。可是不要担忧,即使你第一遍接触这些新概念的时候还有些含糊不清,但咱们会在整个系列的教程中不断重复,直到它们成功的进入你的潜意识,甚至在梦中都不会忘记~前端
须要提醒你们的是,学习一门语言或工具的最好方式是练习和实践。所以,对于初学者来讲,千万不要只是看过一遍了事,而应该本身手动敲入全部的代码,甚至故意修改其中的代码,刻意制造一些bug,而后想办法解决。而在学完本教程以后,要当即开始实战,同时多看苹果官方的示例代码和Github里的示例。不要惧怕麻烦和错误,在解决麻烦和修正错误的过程当中,你能更深刻的领会为什么要这样作,而不只仅是简单的copy和paste。java
在学习的过程当中,会要求你本身作一些思考和练习,而不是彻底被动的接受。仅仅知道前面有这样一条路和本身亲自走过这条路是彻底不一样的感受。学习编程惟一有效的途径就是在思考的同时要本身写代码。ios
前面说了,本系列教程是针对彻底的菜鸟来设计的。也就是说,哪怕你是个彻底不懂编程的文科生,咱们也有信心让你爱上iPhone开发。固然,若是你懂一点编程知识,学习起来会快不少。程序员
因本人时间精力有限,没法跟你们一对一解决相关的技术问题,请你们在QQ交流群594353854 中互帮互助。群里已经几百人了 你们遇到啥问题都会在里面交流!并且免费分享零基础入门资料 iOS开发资料一整套!是个很是好的学习交流地方!也有程序员大神给你们热心解答各类问题!很快满员了。欲进从速哦!各类PDF等你来下载!所有都是免费的哦!只为帮助你们快速入门,因此小编在群里等大家过来一块儿交流学习呢!
web
处女座或强迫症患者必读:数据库
若是你在第一遍开教程的时候有些东西不能百分百理解,最好的方式不是当即钻牛角尖死磕到底,毕竟你没有打过很好的编程底子,这样作会让你很快丧失信心,甚至很快放弃。碰到这类状况,哥建议你先把问题放在那儿(或者记下来),而后继续看下去。等到整个教程看完了,回过头再看你以前遇到的问题,若是仍是不能理解,那么再看一遍。(其实90%的可能性是,等你回头再看当时以为比相对论和量子力学还难理解的问题,如今就是小学加减法的水平)。由于在整个教程的学习过程当中,咱们会对一些重要的概念不断重复,直到你以为跟吃饭走路同样天然。编程
若是说Objective-C曾经是学习iOS开发的最大障碍,那么这最后一点点担心也不须要了,由于在2014年的WWDC上苹果发布了一个新的编程语言-Swift。 它可让开发者在很短的时间里面轻松上手,如同javascript同样,与此同时它的性能又不会比Objective-C差多少,起码是在Java之上。windows
对当前的主流开发语言难度排个序,大体以下(从最难到最简单,比较主观~):xcode
机器语言 >汇编> C++ >Objective-C > C, Lisp,Prolog>C# > Java > Python,PHP, Swift, Javascript, Ruby
正如刚才所提到的,对于汇编如下难度的语言,只要真正学懂一门, 再学其它的编程语言会轻松不少。毕竟在现实的世界里,真正的程序猿和攻城师不多只会一门开发语言的。只懂一门开发语言能活到如今的要吗是某个方面的顶级专家,要吗就是走了技术转管理的路线。
在咱们的教程中,不会也不可能教你学习全部和iPhone,iPad开发的知识。iOS SDK(开发工具包)很是庞大,除了苹果的官方技术文档,市面上没有任何一个教材能够涵盖iOS开发的所有内容。咱们只会教你了解Swift和iOS开发所需具有的核心基础。一旦你掌握了建筑技术,能够本身去探索iOS开发的其它细节。
除了Swift语言和iOS开发工具包的相关知识,咱们最重要的目的是让你学会程序猿的思惟方式。一旦你具有了这种思惟方式,能够完成任何编程任务,无论是游戏,工具,网络应用仍是其它你能想到的东西。做为一个程序猿,须要思考解决各类计算问题,并创造性的想出解决方案。一旦掌握了解决问题的方法,不论多复杂的问题均可以解决。这才是本系列教程的终极目的,让不懂编程的人爱上开发!
能够百分百保证的是,你在学习的过程当中必定会遇到各类问题。程序代码中会出现无数莫名其妙的bug,让你不知所措。但即使是一个拥有30年以上编程经验的程序猿,也会常常遇到这样的问题。咱们只是人类,而人类的大脑在处理复杂计算问题的时候总会出错的。不要惧怕出错,但咱们会提供一些思惟工具,教会你如何填平本身挖的坑。
在我身边有不少人学习iPhone开发的方式是:
从大量的博客和网站中拷贝粘贴代码,而彻底不理解这些代码的工做原理,以及该如何将这些代码嵌入到本身的项目之中。从网络中寻找解决方案是一种高效的工做方式,但你必须真正的理解这些代码的做用,才能触类旁通。
在本系列教程中 ,咱们从一开始就会学习如何构建真正的应用,而不是所谓的baby应用,或是仅仅为了学习目的而设计的简单示例。咱们会详细解释其中的每一步操做,并附上丰富的图片帮助你们来理解。
经过这些步骤,你将在制做这些有趣应用的同时逐渐掌握编程的思惟和技能。当你最终学完本系列教程后,应该已经掌握了Swift和iOS开发工具包的精髓。更重要的是,你应该学会了如何用程序猿的思惟方式来编程和解决问题,并真正开始制做属于本身的应用。对此,我有百分之一千的信心!
固然,最最重要的是,但愿你们在看完教程后,可以爱上iPhone开发,爱上用编程语言来创造世界的乐趣~
那还等什么,让咱们就此开始吧!
iOS7, iOS8,iOS9, iOS10,iOS11…
时光飞逝,世事无常。自2007年1月Macworld上乔帮主那一次惊天地泣鬼神的演讲至今,居然已经10年了!
10年过去了,乔帮主的音容笑貌仿佛还在眼前,只是,人面不知何处去,桃花依旧笑春风。
很感激Cook,在iPhone X的发布会上,他仍然把Steve Jobs的一段话放到了开头。
10年前,Nokia藐视群雄,Motorola和三星争斗不休,众多国产品牌手机和山寨手机还在华强北幸福的收割着打工者腰包里很少的毛爷爷。
10年后,Nokia亏损连连,被Elop的木马计成功收入微软旗下,继而又宣布放弃了这块业务。
Motorola早就被Google收入账下,当年的手机三雄只剩下三星还在行业里兴风做浪。
早期混得风生水起的HTC也在最近将手机设计业务部门出售给了Google。
反观天朝,小米、魅族、华为一片混战,而采用农村包围城市战略的Vivo和Oppo手机则成功登顶国内市场。
不过回顾历史会发现,当天朝的土豪们占据市场主动的时候,就意味着一个行业发展到了高峰期,即将开始走下坡路了。好比从前的PC,好比再以前的家电,莫不如是。
苹果帝国好不容易占据半壁江山,却不幸遭遇王者的离去,在Tim Cook接手苹果以后,迟迟没有给你们提供足够的惊喜。
熟悉苹果的童鞋都知道,乔帮主老是会将一些重要的产品放在One more thing…上。
然而在Cook时代,除了数年前iPhone6发布会上的Apple Watch上用过这个标志性的惊喜宣言, One more thing…居然从苹果发布会中消失了,直到今年。
除了硬件以外,苹果今年在技术创新了也着实拿出了新的东西。在2017年6月的WWDC上,苹果推出了针对虚拟现实开发的ARKit,以及针对深度学习和人工智能的Core ML。能够说,这两个SDK的发布,再配合iPhone X的诸多创新,确实颇有可能引领将来十年的智能手机。
总之,若是对苹果开发感兴趣,那么入手一台iPhone X几乎是必然的选择。若是哪位朋友能确保买到,别忘了帮我一把~
仍是谈谈iOS11吧。
其实上面要说的是,移动互联网行业的发展速度太快了,iPhone操做系统到如今已经到了iOS11。本系列教程将彻底基于iOS11,并采用全新的编程语言Swift4。
既然是学习一门全新的工具,天然要从最新的版本学起,所以,iOS11+Swift4+Xcode9是咱们的第一选择。
有舍才有得
学习iPhone开发不但能够做为一门兴趣爱好,一样还能够带来不错的收益(若是你能给用户带来不错的产品,或者找到一份提供给力薪水的工做~)。但天下没有白吃的午饭,进行iOS开发也是要花钱的。如下是你须要投资的:
1.一台iOS设备:
iPhone,iPad,iPad Pro,iPad mini或iPad Touch中的任一种。只用虚拟机永远无法学会真正的开发。固然,为了支持最新的iOS系统,就不要买太老型号的设备了,好比iPhone4之类的。
由于本系列教程将使用iOS11,因此你们也要了解下支持iOS11的设备:
iPhone:
iPhone 7
iPhone 7 Plus
iPhone 6s
iPhone 6s Plus
iPhone 6
iPhone 6 Plus
iPhone SE
iPhone 5s
iPad:
12.9-inch iPad Pro (2nd generation)
12.9-inch iPad Pro (1st generation)
iPad Pro (10.5-inch)
iPad Pro (9.7-inch)
iPad Air 2
iPad Air
iPad (5th generation)
iPad mini 4
iPad mini 3
iPad mini 2
固然,若是你但愿在本身的应用中提供虚拟现实(ARKit)或人工智能(Core ML)相关的特性,那么就必须使用支持A九、A10或A11芯片的设备,具体来讲是这些:
• iPhone 6s /6s Plus
• iPhone 7 / 7 Plus
• iPhone SE
• iPhone 8/ 8 Plus
• iPhone X
• iPad Pro
• iPad (2017)
我的建议直接购买能够支持ARKit的设备。
2.一台使用Intel内核处理器的Mac电脑:
须要安装最新的macOS High Sierra。建议电脑的内存在4G以上,不然你会很痛苦的。。。
有人说能够用虚拟机在PC上开发,个人建议是,宁肯买一台二手的MAC,也不要用PC开发。不然,你会遇到各类莫名其妙的问题,并且对提升你的编程思惟没有任何帮助。
对通常的入门开发者来讲,若是不是同时还身兼设计师的重任,那么一台13寸的Macbook Air或Macbook Pro就能够知足要求了。
3.一个付费的iOS开发者帐号
有了开发者帐号,最简单的装B方式就是当苹果发布了新的beta版系统时(特别是大版本的更新,好比从iOS9到iOS10),你能够第一时间在本身的iOS设备或者电脑上体验。
固然,最重要的是能够将本身开发的产品放到苹果AppStore里面销售,赚取真金白银,当上CEO赢取白富美今后走上人生巅峰。
如何申请付费的iOS开发者帐号
狠简单,直接到这里就能够了:
developer.apple.com/programs/io…
整个过程其实很简单,不过你须要先注册一个Apple ID,由于你的开发者帐号会与之绑定。其实一年99美圆的费用并不高,若是你是真心想学iOS开发,建议仍是花了这笔钱。 并且苹果如今至关厚道的一点是,只要加入一个开发者计划,就能够为iOS设备,Apple Watch, Mac,Apple TV等苹果全系列硬件产品开发应用。而在此前iOS开发和Mac开发是两个彻底不一样的开发者计划,每一个都要单独收费的哦~
固然,若是朋友们实在是吃了上顿没下顿,或者说只是想观望下,还不想花一毛钱。那么你也能够直接用本身的Apple ID来登陆,一样能够无偿使用Xcode开发工具,也能够在设备上进行测试。可是无法得到最新的Beta版本,更不可能将产品发布到App Store里面。
强大的Xcode
Xcode是开发iPhone应用的主要工具。Xcode带有一个文本编辑器,可让你敲入本身的代码,同时还有一个可视化的工具由来设计应用的用户界面。Xcode能够将你编写的源代码编译成可执行的应用,并在模拟器(Simulator)或设备上进行测试。同时,Xcode还带有一个debugger(调试器),用于帮助你发现代码中的错误(很遗憾,目前它还无法自动帮你修复bug,这一天的到来还须要更给力的人工智能)
下载Xcode的方法很简单,直接从这个连接下载:
固然,最一般的作法是在Mac App Store里面搜索Xcode,而后下载安装就行了。
再次提醒,下载Xcode,Unity和Cocos2d-x等开发工具时必定要从官网下载,且只使用最慢的http下载连接下载,或使用官方的下载工具(好比Unity),不要使用任何第三方下载工具(好比迅雷之类的)。
若是你的操做系统不是macOS High Sierra,那么请先升级操做系统。
本系列教程用的Xcode版本是最新的Xcode 9.0(9A235),而iOS版本是10.3。
不少老的iOS教程还在用Xcode和iOS以前的版本,因此当你阅读那些教程的时候,请注意开发工具的细节差别。
关于计算机语言
语言是一种沟通工具。不少时候咱们觉得iPhone只是一部手机,其实它的内核是一个很是先进的微型计算机,只是同时具有打电话的功能而已。和其它计算机同样,iPhone是经过数字电路的0,1指令来工做的。若是咱们编写软件在iPhone上运行,就必须把源代码翻译成计算机能够理解的0,1指令。
几十年前,人们不得不使用0,1指令和计算机直接交流。而随着汇编和高级语言的出现,大多数的编程语言变得更接近于平常生活所使用的英语。这样一来,人们更容易理解编程语言的使用。但同时也须要将人类能够理解的语言翻译成计算机能够理解的0,1指令。
举例而言,计算机内部会使用如下的语言:(不要关注其中的细节,你如今还看不懂):
事实上,计算机真正看到的指令以下:
上面的movl和calll指令只是为了方便人类理解。但即使如此,对我我的来讲这种语言仍是使人望而生畏。
今天的编程语言是下面这样的(先不要深刻细节,看看而已):
void HandleMidiEvent(char byte1, char byte2, char byte3, int deltaFrames)
{
char command =(byte1 & 0xf0);
if(command == MIDI_NOTE_ON && byte3 !=0)
{
PlayNote(byte2 + transpose, velocityCurve[byte3]/ 127.0f, deltaFrames);
}
elseif((command == MIDI_NOTE_OFF)
|| (command == MIDI_NOTE_ON && byte3 ==0))
{
StopNote(byte2 + transpose, velocityCurve[byte3]/ 127.0f, deltaFrames);
}
elseif(command == MIDI_CONTROL_CHANGE)
{
if(data2 ==64)
DamperPedal(data3, deltaFrames);
elseif(data2 == 0x7e || data2 == 0x7b)
AllNotesOff(deltaFrames);
}
}
复制代码
看到这里或许你才有点感受了。即使你没有任何编程经验,但只要懂英语,就大概能判断出上面代码的意思。以上代码是从一个音效同步工具的程序中截取的。它使用C语言编写,这门语言是上世纪60年代开发的,人们用它开发了著名的Unix操做系统(今天全部操做系统的鼻祖,包括Windows,Mac,Linux)。固然,iOS的内核也是基于Unix系统的。
而这里咱们要着重提一下苹果的新编程语言Swift。Swift集成了传统面向对象编程语言的特性,同时又具有函数式编程的一些特征。若是你曾经学过C#,Python,Ruby或者JavaScript,那么会发现Swift有不少类似之处,很容易上手。
在2014年WWDC以前,用来开发iOS应用的语言被称为Objective-C,它是标准C语言的扩展。使用Objective-C能够完成C语言所能完成的任何工做。同时它还添加了不少有用的特性,好比最重要的面向对象编程(Objective-Oriented)。Objective-C在前些年可谓门庭冷落,无人问津,除了铁杆的Mac粉丝,几乎濒临灭绝。但随着2007年那一次伟大的iPhone产品发布后以后,几乎要被历史遗忘的Objective-C语言再次进入人们的视线,甚至成为今的主流开发语言。Objective-C是2012和2013年的年度编程语言No.1。
目前仍然有大量的iOS项目使用Objective-C开发,毕竟一个新的编程语言普及须要几年甚至更长的时间,不过iOS开发的将来显然是属于Swift的。
这里不得不提到C++语言,事实上C++和Objective-C语言几乎是同时出现的。和Objective-C语言的简洁不一样,C++语言几乎包含了全部可能的特性。做为一门编程语言,它很是强大,且执行效率超高。事实上,全部的操做系统,以及大量的网络游戏,主机游戏和PC游戏,游戏引擎都会使用C++来开发。C++的问题在于,对于一个新手来讲,它异常复杂,包括了基本语言结构,面向对象开发和模板、标准库等诸多内容。学习C++仍是很有难度的,仅次于汇编语言。不过C++11(2011年的新标准)这一C++的最新版本在不少方面作了大的改进,相信会让这门“古老”而又强大的编程语言更加褶褶生辉。
在进行iOS应用或游戏开发的时候,咱们能够混合使用C,C++和Objective-C(简称为Objective-C++)。
此外,Facebook在2015年开源的React Native可使用Javascript开发原生的iOS和Android应用。可是目前由于受权的问题,React受到众多开发者的抵制。因此虽然不少公司的项目用的是React,做为新手的你也可能常常听人提到,可是,谨慎考虑是否用它。
对于iPhone手机游戏开发来讲,因为Cocos2d-x引擎的迅速普及,C++的使用频率也大大增长。此外,主流的3D商业引擎Unreal Engine4使用的就是C++语言。而另外一个主流的手游开发引擎Unity则主要使用C#和Javascript脚本语言。
总之,对于iPhone应用开发来讲,最主要接触的语言是Swift和Objective-C,部分状况下也会用到C++和C,以及javascript等脚本语言。
考虑到本教程的不少读者从未接触过任何编程语言,这里对其它几个主流语言的特色和做用稍微说明一下:
1.Java语言是当今最广泛使用的开发语言,它简单易学(相对C++,C和Objective-C),且跨平台性很是强,对网络开发的支持使人称赞。不少企业使用Java语言来开发商业相关的网络应用。此外,Java语言也是开发Android应用的必备工具。
2.C语言是几个主流开发语言(Java,C++,C#,Objective-C)的根基所在。常有人说,学好C语言,其它的语言就会一通百通。由于对硬件底层性能的支持超强,它的主要应用领域是嵌入式开发、游戏引擎开发等偏底层的部分。C语言基本上已经取代了汇编语言和机器语言在底层开发的做用。
3.PHP语言主要用于开发网络应用(特别是web服务器端,也就是用户不可见的部分,如结合MySQL进行后台数据传输处理等),相对其它几门语言,它很是容易上手。但它的局限性在于除了web应用,对其它应用的开发力不从心。
4.Javascript语言主要用于开发Web前端(也就是用户可见的部分),随着HTML5技术的兴起,Javascript语言必将是将来三到五年的主流Web开发工具。在主流的3D游戏开发引擎Unity中,一样支持使用Javascript做为脚本编程语言。此外,Facebook的开源项目React Native可让开发者使用Javascript语言轻松开发原生的iOS和Android应用。
5.C#语言是微软为了对抗Java语言的强势而自行开发的一种编程语言。它和Java同样简单易学(一样是相对的),但只能支持微软的平台。闻名业界的.NET就是C#语言的最佳搭配。但随着微软在移动互联网领域的式微,C#的地位和前几年比起来大有降低。
不过虽然.NET和C#在Web开发领域的空间愈来愈小,但C#也有新的应用领域,目前最火爆的移动平台3D游戏开发引擎Unity3D主要支持C#和javascript开发,而windows手机平台的卷土重来也让C#有了新的机会。
6.Python,Ruby,Perl同PHP语言的做用相似,属于脚本语言,对于开发网络应用很是高效。其中Python和另外一种脚本语言Lua还常在游戏中做为脚本语言使用。
对于Python要特别补充一点,在2016年下半年开始异常火爆的AI(人工智能)技术中,特别是深度学习等领域,科学家和开发者大量使用Python语言和相关框架。曾经的超轻量级脚本语言在一个超重量级的应用领域重获新生,并且愈来愈受人欢迎。
7.Go语言,一门全新的系统级语言,由Google开发,于2009年发布。虽然它的历史很是短暂,但根据目前的发展来看,Go语言有望在将来十年成为一款成功的系统级语言。Go语言功能强大,能够替代C++。
在TIBOE2017年最新的编程语言排行榜上,Go语言已经从去年的38位急速攀升到14位。
8.Basic(Visual Basic)语言,曾经风骚一时,若干年前不少编程入门课程必教的开发语言。其学习曲线很是平缓,易于上手,但实际项目中用到的不是不少。
9.SQL语言,这是目前最重要的关系数据库操做语言,其影响已经超出数据库领域,在不少其它领域获得采用,好比人工智能领域的数据检索,软件开发工具中嵌入SQL的语言等。SQL语言是一种交互式查询语言,容许用户直接查询存储数据,但它并非完整的程序语言,没有DO或FOR相似的循环语句,但能够嵌入到另外一种语言中,经过接口发送到数据库管理系统。
10.汇编语言,虽然如今是高级编程语言的天下,但性能超强的直接面向硬件的汇编语言仍然在嵌入式开发领域占据着一席之地。只是汇编语言和硬件自己的关联很大,因此普及性通常。目前汇编语言的江湖地位已被C语言替代,但在某些领域还有本身的一席之地。
11.Kotlin语言,Google推出的一门全新的编程语言,用于在Android应用开发中取代Java的地位。
其它语言相对来讲比较冷僻,或者曾经热门但现在使用的人不多,用不到的时候能够无论。
为了让你们对各类编程语言的江湖地位有所了解,不妨看看TIOBE 最新的2017年9月编程语言排行榜~
2014年9月的时候,苹果的御用开发语言Objective-C是Top3的编程语言。可是自从2014年苹果WWDC上发布了新的Swift语言后,Objective-C的排名迅速降低到现在的Top18,而Swift则上升到了Top13。
科普知识到此结束,咱们不打算对Swift语言的特性作详细的介绍,否则极可能5分钟不到你就睡着了。咱们将在建立项目的过程当中一步步解释你所遇到的语言。包括什么是变量,什么是对象,如何调用方法(发送信息)等等。
固然,若是你须要一本随时能够查询的工具书,咱们强烈推荐苹果的官方Swift指南。
好了,有了这么多的基础作铺垫,咱们能够进入正式的开发了!
著做侵删