上次介绍Android操作系统,今天用5分钟继续对iOS操作系统进行简单了解。
iOS简介
iOS是由苹果公司为iPhone开发的操作系统。它主要是给iPhone、iPodtouch、iPad以及AppleTV使用。就像其基于的MacOSX操作系统一样,它也是以Darwin为基础的。原本这个系统名为iPhone OS,直到2010年6月7日WWDC大会上宣布改名为iOS。
Darwin是基于Unix内核开发出来的,而Linux也是参考Unix内核开发出来的开源系统,所以实际上Unix和Linux相爱相杀,又不太相同又很相似,像是一对亲戚。
iOS发展
iOS操作系统基本上从2007年诞生以来每年更新一个大版本,每个大版本会相应更新一些新的特性和功能,具体汇总如下
iOS发展历程
iOS系统架构
iOS的系统架构和Android一样,也分了四个模块,从底层到上层分别为Core OS、Core Services、Media、Cocoa Touch,而且四个模块跟Android的四个模块所实现的功能几乎是一一对应的,感兴趣的读者可以翻出Android系统架构的四个模块进行比对
iOS架构
- Core OS
核心系统层提供为上层结构提供最基础的服务如操作系统内核服务、本地认证、安全、加速等。可以认为是Darwin的系统内核。
- Core Services
核心服务层为程序提供基础的系统服务例如网络访问、浏览器引擎、定位、文件访问、数据库访问等,主要包含以下框架
CFNetwork(网络访问)
Core Data(数据存储)
Core Location(定位功能)
Core Motion(重力加速度,陀螺仪)
Foundation(基础功能如NSString)
Webkit(浏览器引擎)
JavaScript(JavaScript引擎)
- Media
媒体层主要提供图像引擎、音频引擎、视频引擎框架
图像引擎(Core Graphics、Core Image、Core Animation、OpenGLES)
音频引擎 (Core Audio、 AV Foundation、OpenAL)
视频引擎(AV Foundation、Core Media)
- Cocoa Touch
可触摸层主要提供用户交互相关的服务如界面控件、事件管理、通知中心、地图,包含以下框架
UIKit(界面相关)
EventKit(日历事件提醒等)
Notification Center(通知中心)
MapKit(地图显示)
Address Book(联系人)
iAd(广告)
Message UI(邮件与SMS显示)
PushKit(iOS8新push机制)
iOS为何更流畅
我们在日常使用中经常会听到说iOS的使用比Android要流畅,那么为什么我们会有这种感知呢,实际上这根iOS和Android的工作机制不同有关,下面我们来分析下为何iOS会显得更流畅
1、响应优先级不同
iOS:Touch—Media—Service—Core,最先响应屏幕。
Android:Application—Framework—Library—Kernal,和显示相关的图像处理属于Library,触摸屏幕之后会先激活应用、框架然后才是屏幕。
也就是说iOS对于屏幕触控的反馈优先响应屏幕,所以会给使用者造成iOS反应快的感知,比如同一个应用iOS和Android都是2秒打开的话,iOS会先快速打开APP然后2秒钟后加载完成,而Android则是先2秒钟加载完成后才显示打开APP。虽然总耗时相同,但给用户的感知会是iOS更快。
2、硬件工作配置不同
iOS:基于GPU硬件加速,可以不完全借助CPU或者程序本身,而是通过GPU进行渲染达到更流畅的操控表现。
Android:图形特效大多都要靠程序本身进行加速和渲染,并严重依赖CPU运算和操作,加大了处理器的负荷,从而出现卡顿的问题。(虽然Android高版本系统默认开启硬件加速,但无法像iOS系统一样做到系统层级的加速全部图形特效。
3、开发机制不同
iOS:Objective-C或Swift,编译器为gcc,不要虚虚拟机在中间插手,执行效率高。
Android:通过Java虚拟机来执行,系统需要占用大量内存来获取执行速度,再加上不定期的内存自动回收机制,直接导致了卡顿现象的出现。(事实上在介绍Android的文章里我们提到过Android换位ART模式后避免了虚拟机带来的弊端,启动速度已经接近于iOS)
4、系统设计不同
iOS:封闭性,所有APP运行对象比较单一,App Store。
Android:终端对象参数多变,各Android厂商的应用市场,APP管理混乱。
5、消息推送机制不同
iOS:APNs统一管理,应用不会在后台占用内存。
Android:没有统一管理机制,应用可以一直留在后台,导致内存不足。(虽然Google有官方的GCM推送机制,但国内无法使用,所以国内更多是接入各类的第三方推送,不够统一)
iOS的APP开发
- Xcode
是苹果公司开发的一款产品,提供给开发者用来开发iOSApp的集成开发环境(IDE)。Xcode只能运行与苹果系统,所以要想开发iOS App必须要有一台苹果电脑。
- Objective-C
扩充C的面向对象编程语言,1980年代初布莱德·考克斯(Brad Cox)在其公司Stepstone发明Objective-C。
- Swift
WWDC2014所发布的一门编程语言,用来编写iOS应用程序,2015年06月09日,苹果通过WWDC大会上宣布Swift开源。这意味着可以用它来进行开发跨平台的应用,现在Swift已经被评为最有前景的编程语言。