仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1538|回复: 19
打印 上一主题 下一主题

[学习教程] IOS编程之iOS与Android开辟之对照仓酷云

[复制链接]
小魔女 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:39:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
照着书上的例子,一个一个做下来,只要不是文盲,就都会的呀,没有体现我的一点点个人价值。所以我决定了,不能再这样下去克日,GQueues(集成了数个Google服务的在线义务办理器)的开创人与开辟者CameronHenneke将其使用的HTML5挪动版本移植到了iOS与Android上,他纪录了在这两个平台上的开辟事情量并在博客上对了局举行了对照。上面的内容摘取自Henneke的查询拜访了局,并从InfoQ的访谈中摘录了部份内容。
之前的履历
固然在软件开辟方面已有凌驾12年的履历,不外Henneke说他对iOS与Android却没甚么履历,从他的角度来看,这两个平台对他来讲处于统一个程度之上:
在入手下手开辟这个使用时,我完整是个Android老手,乃至在这个项目之前我都没有在电脑上安装过SDK。一样,我在iOS上也是个实足的老手。我在2010年那阵儿曾创立过两个复杂的iPhone游戏,不外他们的庞大性没法与GQueues使用等量齐观,而且利用的APIs也完整分歧。从那以后我就再没碰过iOS开辟,直到往年3月入手下手GQueues项目为止。
开辟
Android


  • 一周的工夫用来看书、进修教程和创立测试使用。
  • 一周的工夫用来完成最后的计划阶段。
  • 入手下手实践的编码事情,这消费了约莫870小时。
iOS


  • 约莫消费了两周工夫用来熟习CoreDataAPIs,利用PersistentStoreCoordinators与ManagedObjectContexts,而且为“FetchedResultsControllers开辟了一个可伸缩的架构”。
  • 又花了两周工夫,他“熟习了iOS开辟”。
总的来看,Henneke在iOS上的进修工夫是Android上的两倍。
关于进修材料,Henneke以为Android文档的质量要高于iOS的。Android的开源特征也有很年夜的优点,他能够浏览代码并从中进修。关于iOS文档,他说到:
固然iOS文档的分散速率很快,不外因为iOS5到iOS6有良多严重的变更(好比说主动援用计数的引进),因而很多内容都过期了。良多代码示例(包含Apple官方示例)和办理成绩的体例都不太正确,我们应当利用更新的办法举行处置。这类选择消费了我很多工夫。固然Android开辟要对“之前HTML5挪动Web使用所用的后端服务器同步代码”举行完整的重写,可是比拟于iOS,Henneke为Android编写一样使用所需的工夫削减了10%。下表展现了整体的开辟统计:
Android
iOS
入手下手工夫
2012.9.21
2013.3.2
Beta版测试工夫
2012.12.22
2013.6.10
使用公布工夫
2013.1.31
2013.7.18
项目总工夫
4.25个月
4.5个月
守候工夫
1周
2周
开辟工夫
870小时(近似值)
960小时(近似值)
Beta测试与修复工夫
34天
38天
Beta测试者数目
92人
48人
代码行数
26,981行
23,872行
使用下载巨细
1.1MB
3.5MB
工具
固然从团体角度来讲更喜好Vim,不外Henneke仍是纪录了项目中所利用的以下一些工具的情形:


  • 在Eclipse中的搜刮速率相称慢且烦琐。
  • XcodeOrganizer中的文档搜刮速率让人没法忍耐。厥后他发明了提拔搜刮速率的办法。
  • Eclipse中依据日记标签举行过滤(集成Android插件中的logcat)的特征十分棒。
  • 两个IDE中的代码完乐成能都很不错。
  • Xcode中的InterfaceBuilder没甚么用。
  • XcodeInstruments在“剖析、器度与调试”方面的用途十分年夜。
  • Android摹拟器用起来十分华侈工夫(这么慢的速率几乎就是个笑话)。在开辟时代,我老是将使用部署到实在的Android设备长进行测试,速率会快很多。
  • iOS摹拟器“速率十分快,使开辟更具效力。关于新代码来讲,我会在摹拟器长进行测试,只在代码成型后才会在实在设备长进行测试”。
  • 关于Android来讲,我会对使用所撑持的每一个Android版本举行测试(除Gingerbread),然后依据Beta版测试者的反应来懂得设备掩盖率。
  • 关于iOS来讲,他利用了使用“所撑持的最老与最新的设备举行测试”。
使用计划
Henneke企图能让其使用在各类屏幕尺寸上都可以很简单地举行结构,他发明Android平台有“成熟的组件能够匡助开辟者撑持各类巨细”。他利用了RelativeLayouts,发明“一切的结构都能够经由过程XML指定,这是计划界面的一种整齐、复杂且高效的体例,也是在iOS中创立结构后他所发明的Android胜于iOS的独一一个特征”。
我们但愿Henneke谈谈他对Android碎片化的意见:
我以为Android碎片化有点儿被人们说得过火了?固然了,这是现实。这是Android开辟的很差的一个方面么?不见得吧。Google与Android社区已接纳了良多手腕来面临这个应战,而且获得了效果。官方的撑持库掩盖普遍而且还在延续开展。ActionBarSherlock是个壮大的第三方库,能够将新的特征带到旧设备上。别的,Google比来公布的GooglePlayServices将厂商在碎片化中的感化下降了。用户不用依附厂商推送最新版的Android就能够取得最新的特征。这关于Android用户与开辟者来讲都是一个伟大的前进。
风趣的是,Henneke关于iOS结构的体验却不是那末好:
AutoLayout(相称于RelativeLayouts)特征很新(iOS6才引进),它与InterfaceBuilder(IB)的集成太可骇了。我花了好几天的工夫在IB中与AutoLayout战役,就像每一个iOS6开辟者一样,为视图构建准确的束缚,只是为了让IB可以完整修正我的规格,由于它有“智能”体系,能够不时确保正确的结构。我查阅了良多提醒与技能来处置IB这个成绩,但却无功而返。最初,我爽性不在IB中结构了,而是经由过程大批榜样代码来手写结构。假如不利用IB和Apple的ASCII艺术作风结构编码,那末AutoLayout完成的确十分壮大和间接。推想Apple会在iOS7中对此举行改善,不外我仍是要本人测试一下才行。
利用AutoLayout限定我只能在iOS6(iPhone4与5)长进行开辟,之前的版本就不可了,关于这一点Henneke说到:
GQueues使用实践上不克不及安装和运转在更老的设备上,这也是我没有在这些老设备上测试的缘故原由地点。在开辟挪动使用时,第一步就是断定要撑持哪些OS版本。iOS6引进了名为AutoLayout的新特征,这是对老式结构手艺的一个伟大改善,固然了,它只能用在运转最新版OS的设备上。我决意不再利用老式的布局办法和AutoLayout配合来创立结构,而只利用AutoLayout,这可以极年夜地下降开辟工夫。固然了,这意味着GQueues使用将只能运转在利用iOS6的设备上,不外这已涵盖了比来两年的一切设备。我以为一团体的德律风假如利用了两年多,那他一定就会换了,因而使用的市场其实不会遭到太年夜的影响。
其他的计划结论另有:


  • 在Android上撑持设备扭转必要很年夜的事情量,而这也是良多Bug的本源。
  • 在Android上,当扭转设备时,实质上体系会停止全部视图栈,当扭转完成时又会从头创立每一个视图。因而,为了让GQueues撑持扭转,我必要确保以后的统统形态可以在恣意时候被得当地保留上去,扭转完成后再恢复形态。
  • iOS上的扭转只需很少的事情量,其他的都由平台匡助我们完成了。
  • 在iOS上,平台匡助你办理了几近一切与扭转相干的事变。
  • Android与iOS都必要编写分外的代码来摹拟FlowLayout。
关于Beta测试与公布,Henneke说到;


  • Android测试很复杂,你只需公布一个APK的链接便可,用户能够将其下载到设备上。
  • Google如今将实在用户的测试变得加倍复杂了,撑持在开辟者把持台上公布Alpha与Beta版及阶段性公布。
  • iOS的Beta测试则要坚苦一些,固然可使用服务TestFlight,它可以简化这个历程。为了包管Apple的把持权,用于测试的每一个设备的UDID必需要增加到证书中,而证书则用来为使用的Beta版署名。如许,每次必要增加Beta测试者时,不管是一团体仍是几团体,我都必要创立并分发一个新的使用构建。别的,Apple每一年将注册的测试设备数限制为100个,因而我必要胆小如鼠地分派资本,这也是我的使用的iOS测试数只要Android一半的缘故原由地点。
  • 在GooglePlay上公布GQueues的历程很兴奋。我能够在筹办好以后就公布使用,单击按钮,30分钟后,使用就能够在全球的GooglePlay上呈现了,用户能够将其安装到本人的设备上。
  • 几近就像每一个iOS开辟者一样,在AppStore上公布的体验使人懊丧。经由了几个月严重、严厉的编码以后,我入手下手将使用提交给Apple,守候了7天,然后考核者只花了两分钟工夫检察我的使用,最初就像官样文章一样将我回绝。接上去,我花了一地利间对他们所请求的举行修正,然后再次提交,在最初审批经由过程前我又守候了8地利间。
Henneke还对两个平台上的数据存储与办理、搜刮、正则表达式、分页、语音输出、共享与小部件等外容举行了一系列的剖析,感乐趣的读者能够在他的博客上浏览这些内容。
最初,Henneke其实不以为这两个平台有优劣之分,每一个平台都有“本人善于且成熟的范畴,也有一些必要改善的方面”。
我们还向Henneke问到他但愿iOS与Android平台上再呈现哪些特征:
在iOS上,我但愿能有siri的API呈现,大概最少是语音辨认的API。在Android上,我但愿能与GoogleNow举行更深度的集成,如许真的会很酷。
最初,我们问Henneke为什么一入手下手就从HTML5迁徙了过去。依据他的履历,HTML5尚不成熟:

关于UIView的子类有很多UIButtonUITableView这个都需要各个击破看看文档从名字上就很容易理解是做什么的UIViewController是管理View和Model的类(@张开说UIViewController是用来管理view的,管理model的类自己写,当然,model也可以用UIViewController来管理,不过恐怕成为不好的代码。
小妖女 该用户已被删除
沙发
发表于 2015-1-30 17:43:11 | 只看该作者
众多研发人员积极参与到iOS平台的开发中来也就不足为奇了。
小女巫 该用户已被删除
板凳
发表于 2015-1-30 18:31:17 | 只看该作者
特别是在校的学生,都存在一个小小的尴尬——虽然学习iOS开发的热情高涨,但由于没有多余的银子购买昂贵的Mac电脑而踟蹰不前。其实,针对初学者,如果想进入iOS开发的天地
透明 该用户已被删除
地板
发表于 2015-2-4 20:52:03 | 只看该作者
培训的时候很痛苦,每天要待12个小时,上午讲课,下午和晚自习解决作业,看文档,学习的时候感觉就是资料太少,而且看着资料也不明所以,非常痛苦,
再现理想 该用户已被删除
5#
发表于 2015-2-6 17:24:36 | 只看该作者
在百度搜索你想要了解的类名(苹果的cocoa和cocoatouch框架的类名很有特点很容易搜到,前缀都是NS or UI),看别人写的博客详解
灵魂腐蚀 该用户已被删除
6#
发表于 2015-2-17 16:12:39 | 只看该作者
以上可以同时进行,学习过程中尽量不要纠结细节和底层,要知道ios是封闭的、OC是高级语言,我们不可能过多地去了解它的原理,至少在新手阶段没有必要。用迭代的方式更新你的知识,而不是死抠一个知识点。
若天明 该用户已被删除
7#
发表于 2015-3-5 20:40:17 | 只看该作者
特别是在校的学生,都存在一个小小的尴尬——虽然学习iOS开发的热情高涨,但由于没有多余的银子购买昂贵的Mac电脑而踟蹰不前。其实,针对初学者,如果想进入iOS开发的天地
admin 该用户已被删除
8#
发表于 2015-3-7 16:08:30 | 只看该作者
培训时可以选择安卓,iOS,Java,因为实习的时候我选了安卓,当时实习时间只有三周,学的晕头转向,而java我也没学过,iOS的基础是C语言,这个大学里还是学过的,于是选择了iOS。
简单生活 该用户已被删除
9#
发表于 2015-3-13 09:08:52 | 只看该作者
其次学习方法和学习心态很重要,在学习当中应该保持一颗良好的心态。应该借鉴别人好的学习方法,大家互相帮助,取长补短。
飘飘悠悠 该用户已被删除
10#
发表于 2015-3-19 06:10:07 | 只看该作者
培训的时候很痛苦,每天要待12个小时,上午讲课,下午和晚自习解决作业,看文档,学习的时候感觉就是资料太少,而且看着资料也不明所以,非常痛苦,
兰色精灵 该用户已被删除
11#
发表于 2015-3-20 16:38:43 | 只看该作者
从C语言入门,因为IOS开发用的是OC语言,是在C基础上的,不过也跟C不是很搭界,你可以直接学习OC语言也可以,
冷月葬花魂 该用户已被删除
12#
发表于 2015-3-23 00:20:42 | 只看该作者
down下code4app网站的每个分类的代码挨着看
再见西城 该用户已被删除
13#
发表于 2015-4-3 20:40:29 | 只看该作者
每个行业都一样,想要一天学有所成是不可能的,一定要做好努力的准备,做ios不是简单的学会oc语言。不怕多走弯路,就怕不肯动手。
只想知道 该用户已被删除
14#
发表于 2015-4-4 03:53:58 | 只看该作者
开始的时候甚至想放弃,不过想想自己的未来,只能咬牙坚持,课下就不停的缠着老师。放学就补基础,这些基础的东西没有速成的,只有刻苦努力。我是后来发现的,转变自己的心态,不要读书看资料当成一种痛苦
愤怒的大鸟 该用户已被删除
15#
发表于 2015-4-10 09:33:33 | 只看该作者
以上可以同时进行,学习过程中尽量不要纠结细节和底层,要知道ios是封闭的、OC是高级语言,我们不可能过多地去了解它的原理,至少在新手阶段没有必要。用迭代的方式更新你的知识,而不是死抠一个知识点。
乐观 该用户已被删除
16#
发表于 2015-4-14 01:16:00 | 只看该作者
每个行业都一样,想要一天学有所成是不可能的,一定要做好努力的准备,做ios不是简单的学会oc语言。不怕多走弯路,就怕不肯动手。
深爱那片海 该用户已被删除
17#
发表于 2015-4-21 21:13:18 | 只看该作者
开始的时候甚至想放弃,不过想想自己的未来,只能咬牙坚持,课下就不停的缠着老师。放学就补基础,这些基础的东西没有速成的,只有刻苦努力。我是后来发现的,转变自己的心态,不要读书看资料当成一种痛苦
精灵巫婆 该用户已被删除
18#
发表于 2015-4-25 12:54:34 | 只看该作者
有办法利用自己手头的电脑立刻开始这个美妙旅程的。
飘灵儿 该用户已被删除
19#
发表于 2015-4-27 03:16:07 | 只看该作者
最后在做项目的时候一定要认真对待,毕竟这个直接和你的就业挂钩,这也是锻炼你实际操作的能力。
蒙在股里 该用户已被删除
20#
发表于 2015-5-6 08:09:13 | 只看该作者
培训时可以选择安卓,iOS,Java,因为实习的时候我选了安卓,当时实习时间只有三周,学的晕头转向,而java我也没学过,iOS的基础是C语言,这个大学里还是学过的,于是选择了iOS。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-2 18:04

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表