大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
准确的说,是使用objective-c语言开发iOS应用
创新互联致力于成都网站建设、网站制作,成都网站设计,集团网站建设等服务标准化,推过标准化降低中小企业的建站的成本,并持续提升建站的定制化服务水平进行质量交付,让企业网站从市场竞争中脱颖而出。 选择创新互联,就选择了安全、稳定、美观的网站建设服务!
第一阶段: RayWenderlich网站中的 The iOS Apprentice教程 (难度指数:※)
以上有几个答案提到了这个网站,但看什么教程没有细说,我在这里简单说说。The iOS Apprentice的教程针对完全没有编程经验的人设计。这个教程是外国人写的并且有免费试读版,感兴趣的人要看看。里面说的东西都非常非常基本,里面一个共讲解了4个不同类型app,强烈建议一步一步按照上面所写的步骤敲一遍代码。其中你会遇到很多复杂的语句和长的可怕的函数,你不用感到恐慌,照着敲,知道它干嘛用完全OK了,随着你编程时间以及经验的增加,你都会懂得。
附链接:
注:这个教程是英文原版,并且收费,只免费提供一个app的教程。如果看完了这个免费的教程觉得还挺想继续学的请参考 @王寒 老师的翻译教程(只有前3个app教程,第4个教程刚出,国内应该还没有人翻译,如果想看只能付费)。PS:(现在开发iOS应用基本都是用Objective-C,至于刚出来的Swift现阶段暂时不推荐学习,如果想了解王寒老师也做了swift版本的The iOS Apprentice教程翻译,自己去找)
附上王寒老师教程下载地址:
第二阶段:培训班的网络课程及入门书籍
经过第一个阶段你应该已经大致掌握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开发者的话这上面两个网站是你经常以及必须会用到的。
精通ios开发对零基础的更友好!如果你是零基础,可以选择精通iOS开发。
ios开发指南就是各种抄而已。
自学一定要跟着代码。代码才是最实用的。
著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:Franz Fang
链接:
来源:知乎
不管是斯坦福大学的CS193p公开课、苹果官方文档、绝大多数市场上庞杂的教学书籍都不是很适合入门同学看,想入门的话应该选用学习成本最低的方法,从最最基本开始讲起,并不是一味的讲解语法与知识,而是一边实践一边学习知识才是最好的学习方法。
并且我想告诉题主,你问的是iOS 开发怎么入门,但是你补充说明里说道的设计模式、内存管理等内容暂时不用你关心,等你真正iOS入门了以后在研究吧。也许我可以这么定义你的问题:
一个略懂编程的人并且完全没有接触过IOS开发的人想要学习IOS开发应如何学习?
--------------- 2015.5.15 更新 --------------
增加了怎么在Github上找优质OC项目
动画效果推荐的教程
部分段落重新组织了语言
(一)objective-c语言开发iOS应用
为什么不让初学者看斯坦福教程:我以为,斯坦福大学IOS公开课不适合入门的同学看,里面第一课讲解的就是MVC模式。对于一个刚入门想要学习的IOS的同学可能就完全懵了,心里想:“我特么第一课都听不懂我后面还学个P啊”。如果以前没接触过面向对象的语言学习的热情肯定大打折扣。
为什么不让初学者看苹果官方文档:我还以为,苹果官方文档的内容虽然权威但example对初学者一点都不友好,而且个人认为中文译文翻译不是令初学者很容易理解。初学阶段,教程的易理解程度我认为是非常重要的一点。(实在要看请看英文原版。)
我不否认以上两者是极好的学习材料,如果你入门了iOS开发并且有一定的英文功底,我是非常推荐你去看的,尤其官方文档,应该经常翻阅。但是我认为保持学习的热情是最重要的。本着这个理念,我推荐的学习方法难度非常低,希望你们能满意。
第一阶段: RayWenderlich网站中的 The iOS Apprentice教程 (难度指数:※)
img src="" data-rawwidth="646" data-rawheight="560" class="origin_image zh-lightbox-thumb" width="646" data-original=""以上有几个答案提到了这个网站,但看什么教程没有细说,我在这里简单说说。The iOS Apprentice的教程针对完全没有编程经验的人设计。这个教程是外国人写的并且有免费试读版,感兴趣的人要看看。里面说的东西都非常非常基本,里面一个共讲解了4个不同类型app,强烈建议一步一步按照上面所写的步骤敲一遍代码。其中你会遇到很多复杂的语句和长的可怕的函数,你不用感到恐慌,照着敲,知道它干嘛用完全OK了,随着你编程时间以及经验的增加,你都会懂得。以上有几个答案提到了这个网站,但看什么教程没有细说,我在这里简单说说。The iOS Apprentice的教程针对完全没有编程经验的人设计。这个教程是外国人写的并且有免费试读版,感兴趣的人要看看。里面说的东西都非常非常基本,里面一个共讲解了4个不同类型app,强烈建议一步一步按照上面所写的步骤敲一遍代码。其中你会遇到很多复杂的语句和长的可怕的函数,你不用感到恐慌,照着敲,知道它干嘛用完全OK了,随着你编程时间以及经验的增加,你都会懂得。
附链接:
注:这个教程是英文原版,并且收费,只免费提供一个app的教程。如果看完了这个免费的教程觉得还挺想继续学的请参考 @王寒 老师的翻译教程(只有前3个app教程,第4个教程刚出,国内应该还没有人翻译,如果想看只能付费)。PS:(现在开发iOS应用基本都是用Objective-C,至于刚出来的Swift现阶段暂时不推荐学习,如果想了解王寒老师也做了swift版本的The iOS Apprentice教程翻译,自己去找)
附上王寒老师教程下载地址:
第二阶段:培训班的网络课程及入门书籍
经过第一个阶段你应该已经大致掌握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上怎么搜牛人们的项目:
img src="" data-rawwidth="425" data-rawheight="360" class="origin_image zh-lightbox-thumb" width="425" data-original=""
想学一点UI的同学可以看:
1、iOS by Tutorials
2、design+code 网址:
想学一点动效/交互的同学可以看:
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:
2、StackOverFlow:
3、Code4App:
4、cocoachina:
5、objc中国:
进阶博客(排名不分先后..)
1、王巍的博客(我们都叫它喵神,他很萌哒)
链接: (难度指数:※※※※※)
理由:他的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
链接: 新博客: 旧博客:念茜的博客
理由: iOS圈里的女神级人物,她写的iOS安全类的文章非常值得一看。
9、孙源的blog
链接: sunnyxx的技术博客
理由:90后iOS开发者,技术同样非常强,目前似乎在百度知道任职。
等等...iOS圈内值实力很强又懂得分享知识的开发者绝不止以上几位,我随时想到随时再补充。
(二)swift语言开发iOS应用
这里推荐两个入门学习比较好的方法
1、的网站(难度指数:※)
非常浅显易懂的入门级swift教程:
这个网站可以看两方面:
(1)、随时更新的swift tips (有一定水平在看)
(2)、新手主要看以下这本书img src="" data-rawwidth="390" data-rawheight="434" class="content_image" width="390"
2、《Swift Tutorials》 依然是raywenderlich出品,目前只有英文版。(难度指数:※)
3、官方swift译文教程 《The Swift Programming Language》中文版 (难度指数:※※)
4、上文提到的王巍的博客(喵神)《Swifter - 100 个 Swift 必备 tips》(难度指数:※※※※)
喵神的这本书网上就有售卖,请支持正版,绝对是不可多得的进价书籍,此书并非传统意义上的教程,是以tip的方式呈献给大家的。
1.什么是蓝牙4.0,蓝牙其它标准又是什么?
详细描述:低功耗蓝牙(Low Energy; LE),又视为Bluetooth Smart或蓝牙核心规格4.0版本。其特点具备节能、便于采用,是蓝牙技术专为物联网(Internet of Things; IOT)开发的技术版本。所以它最主要的特点是低功耗,普及率高。现在所说的蓝牙设备,大部分都是在说4.0设备,ble也特指4.0设备。 在4.0之前重要的版本有 2.1版本-基本速率/增强数据率(BR/EDR) 和 3.0 高速蓝牙 版本,这些统称为经典蓝牙。4.0还有4.1和4.2的小版本,其中4.2版本对传输速率做了进一步他提升,提高了2.5倍,苹果从iphone6开始使用4.2,最新的蓝牙标准为蓝牙5.0,其中最大的特点连接范围扩大了4倍,速度又提高了2倍,无连接数据广播能力提高了8倍,增加了蓝牙组网的能力。
2.蓝牙开发必须知道的概念。
2.1.1 central和peripheral:
蓝牙应用开发中,存在两种角色,分别是central和peripheral(pə’rɪfərəl) ,中文就是中心和外设。比如手机去连接智能设备,那手机就是central,智能设备就是peripheral。大多时候都是central去连接peripheral的场景。
2.1.2 广播和连接:
peripheral会发出广播,central扫描到广播后,可以对设备进行连接,发出connect请求,peripheral接收到请求后,同意连接后,central和peripheral就建立了连接。
2.1.3 连接后的操作:
write,read,notify,indecate, response or not …
indecate和notify的区别就在于,indecate是一定会收到数据,notify有可能会丢失数据(不会有central收到数据的回应),write也分为response和noresponse,如果是response,那么write成功回收到peripheral的确认消息,但是会降低写入的速率。
2.1.4 协议:
每个具体的智能设备,都约定了一组数据格式,这个就是数据协议,例如手环中获取到数据0X001023,其中第2位到第5位表示步数,那么就2310就是步数的16进制的数据,转换成10进制就是8976步,需要注意的是,设备端都是小端模式,所以取4位时候,高字节在前低字节在后。
3. iOS蓝牙应用的一般开发流程。
4. 蓝牙的数据交互。
write,read,notify,indecate, response or not … 都是容易理解的,indecate和notify对应的是长连接,建立indecate后,peripheral可以随时往central发送数据。
indecate和notify的区别就在于,indecate是一定会收到数据,notify有可能会丢失数据(不会有central收到数据的回应),write也分为response和noresponse,如果是response,那么write成功回收到peripheral的确认消息,但是会降低写入的速率。
对于一个charateristic,他的读写订阅的权限是peripheral决定的,熟悉可以被同时设置,一般会根据外设的功能来决定。
5.蓝牙ota DFU。
蓝牙ota,DFU(Device Firmware Update)指的是蓝牙设备的固件升级,其实是一整套流程,不同的蓝牙芯片,ota的流程有不同之处,我这里用ti的芯片举例。步骤为:切系统(bootloader mode),重启,传输数据,验证数据,切系统,重启,完成。
其中数据传输也会分成很多节去发送,没法送一段数据,做一次数据校验。
6.ota存在的问题。
每个智能设备的速率,功耗,存储都会有很多限制,导致很多设备会自己去实现ota的功能,自定义流程和数据传输方式,导致许多设备都是有自己私有的ota模式和协议,所以在做开发的时候,要仔细阅读设备协议中对ota的描述。
7.如何做自动重连。
只需要在设备断开连接的委托方法中,重新调用gatt.connet或者是centralManager.connet方法就可以了,无论当时设备是否有点,是否在周围,当设备再次开会或者连接到可连接范围内,都会自动被连上。
8.连接失败处理。
分两个平台来说,iOS端也有连接失败的委托,但是好像几乎不会发生这种情况,而对于同款设备,android常常会出现连接失败的情况,status != BluetoothGatt.GATT_SUCCESS,android端开发请不要把连接失败和断开连接放在一块处理,因为断开连接可以直接尝试重新连接,而连接失败后尝试重新连接,需要加一些延时,并且需要gatt.close,清空一下状态,否则会把gatt阻塞导致手机不重启蓝牙就再也无法连接任何设备的情况 。
9.后台运行。
iOS后来运行,需要设备中info.Plist权限,key:Required background modes ,value: bluetooth-central(手机作为central) , bluetooth-peripheral。
10.同时连接多个设备。
使用同一个CBCentralManager,通过进入委托的peripheral的identifier区分不同的设备,进行不同的操作和处理。
11.扫描广播包。
所有外设,只有在发出广播包的情况下,才能被central发现,绝大多数情况下,外设被连接后就不会发出广播(也有例外),很多人遇到无法找到设备的问题,大多属于这种情况。
12.提高蓝牙连接速度。
无论是iOS,还是android,都可以通过已绑定的设备,在不开启扫描的情况下进行快速连接,iOS需要的参数是peripheral的identifier,android需要mac地址。但android和iOS还是有一些区别的,比如iOS不能拿到已绑定的设备list,但是可以通过UUID去拿到peripheral的实例。而android可以拿到已绑定的设备list。android绑定过程需要手动调用createBond的方法,而iOS在连接成功一次后会自动绑定。 android在处理createBond时,常常会应为不同手机平台,不同设备,会产生兼容性的问题,这点需要注意。
13.定向扫描。
在扫描时候可以传入serviceUUID,这样可以扫描到特定条件的设备,提高扫描的速度,排除干扰。
14.如何获取mac地址。
而iOS出于苹果的安全策略问题,无法直接获得mac地址,只能得到一个mac地址换算出来的identifier。
IOS开发指南:从零基础到App Store上架,完整扫描版
本书共4 部分:第一部分为基础篇,介绍了iOS 的一些基础知识;第二部分为网络篇,介绍了iOS 网络开发相关的知识;第三部分为进阶篇,介绍了iOS 高级内容、商业思考等;第四部分为实战篇,从无到有地介绍了两个真实的iOS 应用——MyNotes 应用和2016 里约热内卢奥运会应用。书中包括了100 多个完整的案例项目源代码,大家可以到本书网站 下载。
本书适合iOS 开发人员阅读。