设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 IT综合资讯 查看内容

九大角度全方位对比Android、iOS开发

2013-11-19 09:51| 发布者: joejoe0332| 查看: 2644| 评论: 0|原作者: 魏兵|来自: TechCrunch

摘要:   对于许多创业者来说,选择Android还是iOS永远是一个棘手的问题。最近,有数据显示Android 的市场份额已经突破80%。可能有不少人会觉得因此开发者在两个平台之间的选择就更加容易,毕竟市场决定利润。但事实上并 ...


  用户体验设计


  在这一项对比中,相信大多人都认为觉得苹果是胜者。Interface Builder是Mac OS X平台下用于设计和测试用户界面(GUI)的应用程序。虽然Mac OS X下所有的用户界面元素都可以使用代码直接生成;但IB能够使开发者简单快捷的开发出符合Mac OS X human-interface guidelines的GUI。通常开发者只需要通过简单的拖拽(drag-n-drop)操作来构建GUI就可以了。IB使用Nib文件储存GUI资源,同时适用于Cocoa和Carbon程序。在需要的时候,Nib文件可以被快速地载入内存。


  理论上将,Android平台也有一个具有可比性的可视化工具,但还是不提了吧。Android平台上应用的开发将会面对各式各样不同的屏幕尺寸,这是它不可忽视的问题。当然,iOS设备的尺寸也在逐渐多样化,iOS平台未来也一定会面临一样的问题。当然,Android也向开发者提供了icon包帮助开发者更加容易的完成UX设计。不过,iOS开发者也可以利用一些第三方的icon包,比如Icons8。


  在这项对比上,iOS尤其特殊的优势。首先,屏幕种类相对更加简单,只有三种(iPad、iPad mini及iPhone)尺寸和两种分辨率;其次是其默认的iOS视觉元素如弹出式菜单和消息,比Android的视觉效果更有吸引力。


  结论:iOS更胜一筹


  语言


  Android是利用Java;iOS利用Objective-C。当然,也有例外,如Xamarin。相比Java,Objective-C显得较为啰嗦,比如,在Java中的这句定义字符串的语句:

String s2 = s1.replace(“abc”,”xyz”);


  到Objective-C中变成了:

NSString *s2 = [s1 stringByReplacingOccurrencesOfString:@"abc" withString:@"xyz"];


  但用Objective-C时间久了就会发现比Java更好更干净。Objective-C有代码块,Java没有;它有类别(categories),Java没有。Objective-C不需要开发者去用try/catch进行异常处理,Java需要。


  当然,Java有其自己的优点。比如更好的堆栈追踪,这意味着追踪零星的错误更加容易。在几年前,Android在垃圾回收机制上一直有巨大的优势。而现在,iOS平台上有了自动引用计数,Android的优势也渐渐消失了。


  结论:iOS的Objective-C胜出


  API


  Android和iOS都给自己的开发者提供了巨大的软件库,广义上讲,这些库基本类似:提供手机功能及特点的API、提供网络访问功能、提供包括功能强大的WebView(基本上可以实现一个完整浏览器的功能)在内的全套视图对象。最重要的是同时还提供控制器,基本上iOS ViewController与Android Acticity十分类似。


  iOS提供了一组Android不具备的框架和特性——比如,没有一款Android系统能够提供媲美iOS Core Data framework的框架或其它特性。并且,iOS比Android更加干净,有着更好的设计。


  另一个指标(有争议):代码行数。对于拥有相近功能的某个应用来说,iOS平台上通常利用1596行代码就可实现,包括头文件,而对于Android上的Java代码及XML,则需要2109行,多了32%。


  结论:iOS更优


  网络通信实现


  现在大多数应用都采用互联网API,iOS和Android都提供了一整套工具和API帮助开发者实现这样的功能,都提供了非常类似的WebView——基本上相当于一个浏览器窗口,开发者可以将其插入到应用程序的任何位置。


  网络连接基本上都是在后台运行的,所以一般不会阻塞应用的主线程,多线程难度比较大。Android提供了一个AsyncTask类来解决类似的问题,虽然有些冗长,但效果很好。Android另外还提供了一个简单的方法来判断用户是否在线。iOS也提供了差不多的东西,但相比之下显得低级,令人并不是那么满意。


  不过,也有一些开源库能够帮助开发者更好的实现iOS上的网络通信功能,比如AFNetworking。不过这个在Android上实现不了,因为Java不支持代码块。


  结论:不考虑第三方库的情况下,Android有优势,而iOS在第三方库上具有优势。



酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部