【框架】iOS框架研究

原创 2016年06月01日 14:46:03
更多内容欢迎光临作者博客:

学习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,使其在相同的一套应用之间平滑过渡。
 
由下至上,每一层都是为下层的库作抽象封装,上层都是基于下层提供的服务至上而创建的,更加接近用户。
由下至上,每一层都是更加接近底层操作系统,下层都为上层提供了最基本的支持。
在使用过程中,尽量使用上层的接口,能节省很多开发的时间。如果上层接口不能满足需求,则可以在下层寻求帮助。
只有知己知彼,方能百战百胜。知道了这套框架,写代码才能有的放矢,更有信心。
 

iOS内核初探(别人的分析研究)

看标题就知道我下一步想干嘛了,坚持吧,发现现在已经到了关键时刻!     因为由于IOS内核的代码是不开源的。所以,我必须自己来挖掘和分析。IOS SDK不支持内核的调试。我利用反汇编工具IDA P...
  • joosonmao
  • joosonmao
  • 2014年03月20日 11:16
  • 8710

云风skynet服务端框架研究

http://forthxu.com/blog/skynet.html skynet是云风编写的服务端底层管理框架,底层由C编写,配套lua作为脚本使用,可换python等其他脚本语言。...
  • oMingZi12345678
  • oMingZi12345678
  • 2015年12月10日 13:44
  • 8044

dubbo框架应用总结

1.dubbo dubbo是一个分布式服务框架,致力于提高性能和透明化的RPC远程服务调用,以及服务的治理方案。其核心包含: a.远程通讯:提供多种基于长连接的NIO框架抽象封装,多种线程模型,序...
  • oujingyin1989
  • oujingyin1989
  • 2016年03月19日 16:32
  • 283

关系型数据库工作原理-数据库整体框架(翻译自Coding-Geek文章)

本文翻译自Coding-Geek文章:《 How does a relational database work》。原文链接:http://coding-geek.com/how-databases-...
  • ylforever
  • ylforever
  • 2017年03月04日 21:03
  • 685

初探高性能网络I/O框架库模型(Linux)

一般的高性能网络I/O框架库包含这样几个组件:句柄(Handle)、事件多路分离器(EventDemultiplexer)、事件处理器(EventHandler)、具体事件处理器(ConcreteEv...
  • kimg_bo
  • kimg_bo
  • 2015年11月20日 22:27
  • 881

Prism框架研究(一)

从今天起开始写一个Prism框架的学习博客,今天是第一篇,所以从最基本的一些概念开始学习这个基于MVVM的框架的学习,首先看一下Prism代表什么,这里引用一下比较官方的英文解释来看一下:Prism ...
  • lnc2003
  • lnc2003
  • 2017年01月13日 14:07
  • 514

值得研究的PHP主流FrameWork框架

熟悉Java的淫都知道FrameWork的好处,对我们来说,最重要的一点就是能够大大提高开发效率,PHP作为web应用开发语言以来,已经受到全球范围内的广泛使用,各种资源也是相当丰富,我这几年也一直使...
  • newhappy2008
  • newhappy2008
  • 2006年11月30日 22:10
  • 5726

Python Odoo框架框架环境的搭建

注:此文源码目录设定在D:\Works\odoo l、安装Postgresql-9.5,添加配置用户odoo并设置密码,添加role privileges权限: 选中"Can create dat...
  • mxz19901102
  • mxz19901102
  • 2016年12月28日 10:24
  • 394

基于dubbo核心的框架小结

brew list (1)环境安装 dubbo-admin-2.5.4-SNAPSHOT.jar 网上可以下载,dubbo服务管理界面 (2)技术框架 1.表现层用jquery...
  • AC_great
  • AC_great
  • 2017年05月17日 16:25
  • 486

RPC框架的意义和用法,什么是RPC

关于RPC框架,首先我们要了解什么叫RPC,为什么要用RPC。 RPC是只远程过程调用,也就是说两台服务器A,B, 一个应用部署在A服务器上,另一个应用部署在B服务器上,A服务器上的应用想要调用B服...
  • xj15010735572
  • xj15010735572
  • 2018年01月10日 17:00
  • 628
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【框架】iOS框架研究
举报原因:
原因补充:

(最多只允许输入30个字)