用户体验设计 在这一项对比中,相信大多人都认为觉得苹果是胜者。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在第三方库上具有优势。 |