学习iOS开发已有数年时间,基本的各种库操作都能够熟练完成,但是对于iOS的整体框架还需要重新学习一边。每天的工作其实都离不开这套框架,它上至用户所见之界面,下至底层操作系统,就相当于一个工具箱,不论你的App多么复杂或者多么简单,都离不开这套工具,所有功能都是建立在这套工具之上的。今天研究了这套框架,发现其中有很多有意思的地方。
iOS整体框架主要由四层组成:
CocoaTouch Layer(触摸UI层):
该层主要是用来解决iOS系统与用户之间的交互问题,其中使用比较多的就是UIKit框架,下面就来介绍一下UIKit框架。
UIKit框架提供实现图形和事件驱动的应用的至关重要的基础。包括:
1、基本的应用管理和基础设施,包括应用的主循环;
2、用户接口管理,包括对storyboards和nib文件的支持;
3、一个用来封装用户UI内容的视图控制器模式;
4、 标准系统视图和控制对象;
5、提供处理触摸和运动事件的支持;
6、支持包括与iCloud集成功能的文档模式;
7、 图形和窗口支持,包括支持外部显示器;
8、多任务支持;
9、打印支持;
10、 定制标准UIKit控制的外观;
11、支持文本和web内容;
12、剪切、复制、粘贴的支持;
13、支持动画UI;
14、通过url语义和框架接口与系统提供的其它应用集成的能力;
15、对有障碍用户的可存取性的支持;
16、支持ApplePush Notification服务;
17、本地通知调度和提交;
18、pdf 创建;
19、支持定制像系统键盘行为一样的用户输入视图;
20、支持创建与系统键盘交互的定制的文本视图;
21、支持通过email,Twitter, Facebook和其它服务共享内容。
也支持一些设备特定功能的集成,例如
1、内建的摄像机;
2、用户的图片库;
3、设备名和模式信息;
4、电池状态信息;
5、接近传感器信息;
6、来自附件耳机的远程控制信息
Media Layer(媒体层):
使用比较多的就是Core Graphic框架。
Core Graphic 框架主要用来补充UIKit而设立的。一般情况下,都可以使用UIKit提供的控件来满足设计需求,但是如果是一些特型的控件,需要特殊绘制,就需要用到CoreGraphic框架了。
1、创建基于路径的绘图
2、抗锯齿渲染
3、添加梯度、图片和颜色
4、用户坐标转换
5、创建、显示和分析PDF文档
Core Animation 提供比 UIKit 更底层的动画效果Api支持。对内容进行操作、旋转、缩放和转换。该框架包含在Quartz Core框架中。
1、创建定制动画
2、添加定时函数和图形
3、支持帧动画
4、特殊布局约束
Open GL ES 支持更底层的2D\3D图形绘制。
1、创建2D和3D图形
2、创建更复杂的图形,比如数据虚拟化、模拟飞行,或者视频游戏
3、访问底层图形设备
Core Service Layer(核心服务层):
该层主要是封装了一些接口,提供最基本的操作。其中最主要的就是Foundation框架。
Foundation框架主要提供了:
1、集合数据类型(数组、集合等等);
2、应用打包Bundles;
3、字符串管理;
4、日期和时间管理
6、原始数据块管理
7、Preferences管理;
8、URL和流操作;
9、线程和运行环;
10、Bonjour;
11、通讯端口管理;
12、国际化;
13、规则表达式匹配;
14、Cache支持。
Core Data 框架是建立在内建sqlite数据库基础上的ORM框架。可以用它来创建并管理对象,对其进行增、删、改、查等操作。并方便的建立对象之间的联系,本地化等操作。
1、在库里存储和接收对象
2、提供基本的undo/redo
3、自动验证属性值
4、过滤、分组和优化内存中的数据
5、用[NSFetchedResultsController]管理表视图中的结果
6、支持基于文档的应用程序
Core OS Layer(核心操作系统层):
最底层的框架,所有上层框架都是建立在该层框架之上的。最然大多数情况下,你不能直接与该框架进行交互,但是进行安全和外设通讯等操作时候,可以直接调用该层Api。
Core Bluetooth框是提供Api给开发者来与蓝牙低电耗外设进行交互的框架。
1、扫描蓝牙外设,连接和断开发现的蓝牙外设;
2、声明应用的服务,转换ios 设备成其它蓝牙设备的外设;
3、 从IOS设备广播iBeacon信息;
4、保存你的蓝牙连接的状态,当应用重新启动时恢复那些连接;
5、蓝牙外设可获得性变化时获得通知。
Security框架提供了一个安全框架,用户可以利用其进行应用程序的安全管理。
1、提供了管理证书、公有私有Key和信任策略。
2、支持生成加密伪随机码。
3、支持在KeyChain保存证书和加密Key。
4、公共加密库提供对称加密、Hash认证编码和数字签名。
5、提供给开发者在多个App之间共享加密信息的KeyChain,使其在相同的一套应用之间平滑过渡。
由下至上,每一层都是为下层的库作抽象封装,上层都是基于下层提供的服务至上而创建的,更加接近用户。
由下至上,每一层都是更加接近底层操作系统,下层都为上层提供了最基本的支持。
在使用过程中,尽量使用上层的接口,能节省很多开发的时间。如果上层接口不能满足需求,则可以在下层寻求帮助。
只有知己知彼,方能百战百胜。知道了这套框架,写代码才能有的放矢,更有信心。