Objective-C不包括空间机制(namespace mechanism)。Objective-C采用的开发者必须在类的名称加上前缀,这时常导致冲突。在2004年,所有的Mac OS的类名前面和函数都有“NS”或“UI”的前缀。例如NSObject和UILabel来区分它们属于Mac OS X核心。虽然Objective-C是C的母类,但是它不是C的基本型别为第一级的对象。和C++不同的是,Objective-C不支持运算符多载。Objective-C只允许对象继承一个类别,不允许对象的多重继承。但是它和Java一样,可以间接实现对象的多重继承。Objective-C可以通过代理、协议、通知和指针,来实现页面的传值和跳转。
Swift是将现代编译语言的精华和苹果公司的工程师文化结合起来的一款新型的编程语言。Swift语言是苹果新推的语言在2015的推广使用下已经上升到所有语言使用率排名表上第5的地方了。Swift相对Objective-C而言大量提高了编码的速度。所有方法都是点语法,而且提示很全,时时编译并提示错误,有自动修改的功能。同时能和苹果前语言Objective-C完美兼容,而且能够共享数据。与Objective-C相同的地方就不再一一介绍了。Swift和Objective-C最大的不同就是数据的类型,Swift有强制解包和闭包,对于他的理解大部分人都比较模糊,没有一个明确定义。强制解包和闭包就是类型之间的相互转化,有些通过控件传来的值,当开发者不确定他的类型的时候,而开发者又想用一个类型的去接收它,这是开发者就需要用到强制解包和闭包,确定的类型用“!”不确定用“?”。Swift还比Objective-C多了几种类型的数据比如:元组,任何型类数据[2]。
2。1。1 iOS系统框架
iOS的操作系统和它的系统架构一样,都采用了分层的思想。iOS分为四层[3]:
(1) 核心操作系统层(the Core OS layer)
(2) 核心服务层(the Core Service layer)
(3) 媒体层(the Media layer)
(4) Cocoa触摸架构层(the Cocoa Touch layer)。
2。1。2 iOS核心服务层和核心操作系统层
iOS系统架构的最下面一层是核心操作层,它包括的业务有:内存管理、文件管理、电源管理和一些操作业务,它可以直接和硬件设备进行数据的交互。核心操作系统层包括:Mach3。0,Security,File System Keychain,BSD,OS X Kernel,Power Mgmt,Bonjour,Certificates等[4]。
iOS用的很广泛的数据库就是SQLite,它是轻量级的和嵌入式的SQL数据库,也是系统的一部分,大大减少了开发人员的压力。此外,主要负责网络服务的是Net Servicer,具有很强的交互性,进行服务器与程序间的连接。应用程序中使用的各种媒体文件都是通过媒体层,制作的动画以及图形的绘制。包括的组件有很多,比如:Core Animation,JPG,OpenGL,PDF,OpenGL ES[5]。
Cocoa Touch层里面的非常多的技术全都是基于Objective-C的。比如,UIKit这个框架,它提供了视图(view)、窗口(window)以及按钮(UIButton)等可视化组件。
2。1。3 iOS应用程序的框架
(1) iOS应用程序的框架包括[6]:
电话本:
AddressBook。framework(电话本框架)提供了手机设备中的通讯录的编程接口。开发者能够运用这一框架访问和修改电话本中的联系人的记录。
(2) 核心基础框架:
CFNetwork
(3) 使用CFNetWork框架实现任务的流程:
①BSN Sockets开始工作
②利用SSL或TLS创建机密链接,准备解析
③解析DNS Hosts
④解析HTTP协议,并并鉴别HTTP和HTTPS服务器,准备工作
⑤在FTP服务器工作
⑥总结前面工作,发布、解析和浏览Bonjour服务
(4) 核心位置框架(Core Location Framework):