ios开发Graphics

iOS系统架构和常用框架

2021-07-07  本文已影响0人  断念的决绝

一)iOS的系统架构

iOS基于UNIX系统,iOS的系统架构分为四层,由上到下一次为:可触摸层(Cocoa Touch layer)、媒体层(Media layer)、核心服务层(Core Services layer)、核心操作系统层(Core OS layer),如下图:

image

(1)触摸层:为应用程序开发提供了各种常用的框架并且大部分框架与界面有关,本质上来说它负责用户在iOS设备上的触摸交互操作。如NotificationCenter的本地通知和远程推送服务,iAd广告框架,GameKit游戏工具框架,消息UI框架,图片UI框架,地图框架,连接手表框架,自动适配等等

(2)媒体层:提供应用中视听方面的技术,如图形图像相关的CoreGraphics,CoreImage,GLKit,OpenGL ES,CoreText,ImageIO等等。声音技术相关的CoreAudio,OpenAL,AVFoundation,视频相关的CoreMedia,Media Player框架,音视频传输的AirPlay框架等等。

(3)核心服务层:提供给应用所需要的基础的系统服务。如Accounts账户框架,广告框架,数据存储框架,网络连接框架,地理位置框架,运动框架等等。这些服务中的最核心的是CoreFoundation和Foundation框架,定义了所有应用使用的数据类型。CoreFoundation是基于C的一组接口,Foundation是对CoreFoundation的OC封装。

(4)核心操作系统层包括:包含大多数低级别接近硬件的功能,它所包含的框架常常被其它框架所使用。Accelerate框架包含数字信号,线性代数,图像处理的接口。针对所有的iOS设备硬件之间的差异做优化,保证写一次代码在所有iOS设备上高效运行。CoreBluetooth框架利用蓝牙和外设交互,包括扫描连接蓝牙设备,保存连接状态,断开连接,获取外设的数据或者给外设传输数据等等。Security框架提供管理证书,公钥和私钥信任策略,keychain,hash认证数字签名等等与安全相关的解决方案。

image

框架是一个目录,这个目录包含了共享库,访问共享库里代码的头文件,和其它的图片和声音的资源文件。一个共享库定义的方法或函数可以被应用程序调用。

IOS提供了很多你可以在应用程序里调用的框架。要使用一个框架,需要将它添加到你的项目中,你的项目才可以使用它。许多应用程序都使用了如Foundation、UIKit、和CoreGraphics这些框架。 根据你为应用程序选择的模版,相关的框架就已经被自动引入了。 如果默认加入的框架不能满足你的应用程序的需求,你也可以加入需要的框架。
看看HelloWorld.xcodeproj项目里都包含了哪些框架(注:HelloWorld.xcodeproj是《Your First iOS App tutorial 》这篇教程里的一个项目)

1.在XCode里打开HelloWorld.xcodeproj项目(如果还没有打开)

  1. 在project navigator窗口里点击,点击Frameworks目录前面的三角形图标。你会看到: UIKit.framework,Foundation.framework, 和CoreGraphics.framework
  2. 点击任意一个framework前面的三角,然后再点击Headers前面的三角,可以看到框架里的头文件。
    每个框架对应IOS系统里的一层,每层建立在它下面层的上面。应该尽量使用上层的框架来代替下面的框架。更高层次的框架是对底层框架基于对象的抽象。
image.png

iOS应用程序基于Foundation和UIKit框架

   在你开发程序时,主要使用框架就是Foundation和UIKit,因为它们包含了你需要的大部分东西。

Foundation框架为所有的应用程序提供基本系统服务

    你的应用程序,UIKit和其它的框架都是建立在Foundation框架上面的。Foundation框架是用Object-C对Core Foundation框架里许多特性的封装。

   使用Foundation可以:

UIKit框架提供创建基于触摸用户界面的类

  所有的iOS应用程序都基于UIKit,你不能是应用程序脱离这个框架。UIKit提供了在屏幕上绘制的机制,捕获事件,和创建通用用户界面元素。UIKit也通过管理显示在屏幕上的组件来组织复杂的项目。

  使用UIKit可以:

你需要知道的其它重要的框架

Core Data , Core Graphics, Core Animation,和OpenGLES框架都是高级的技术。所以这些框架对于你开发应用程序也是很重要的,它们都需要时间去学习和掌握。

Core Data框架管着理应用程序数据模型

     Core Data提供对象的管理,使用Core Data,你可以创建模型对象,并管理这些对象。你管理这这些对象间的联系并修改数据。Core Data提供的内建SQLlite技术可以高效的管理数据。

     使用Core Data可以:

Core Graphics框架帮助你创建图形

   高质量的图形对于所有的iOS应用程序都是很重要的。在iOS中最简单且最快捷的创建图形的方式是使用UIKit框架提供的基于预渲染图形的视图和控件,然后让UIKit和iOS完成绘制。但是当你需要创建复杂的图形时,Core Graphics则提供了更底层的库来帮助你。

   使用Core Graphics可以:

Core Animation允许你创建高级的动画和虚拟效果

       UIKit提供建立在Core Animation之上的动画。如果你需要比UIKit能力更高级的功能,可以直接使用Core Animation。Core Animation接口包含在Quartz Core框架里。使用Core Animation可以创建嵌套的对象,并且可以对它们操作、旋转、缩放和转换。使用Core animation,你可以创建动态的用户界面而不用使用更底层的图形API,如OpenGL ES。

       使用Core Animation可以:

OpenGL ES 框架提供2D和3D绘图工具

OpenGL ES支持2D和3D绘图,Apple的OpenGL ES实现通过硬件提供了高速的全屏游戏式的应用程序。

       使用OpenGL ES可以:

根据需要向项目中添加其它框架

       还有许多框架可以添加到你的程序里。当你决定使用一个框架但项目里却没有引入这个框架时,你就需要将它加入到你的项目里。

[图片上传失败...(image-d66a48-1625620966975)]

将别的框架添加到工程里

1 打开工程

2 点击项目名,显示project editor

3 在TARGETS列表中选中要添加框架的工程

4 点击project editor顶部的Build Phases

5 点击Link Binary With Libraries前面的三角形打开这个分组

6 通过点击添加(+)来添加一个框架

7 在列表中选择一个框架,然后点击Add按钮

设备中的框架</caption>

Accelerate.framework

包含加速数学和DSP函数。 请查看 加速框架参考

AddressBook.framework

包含直接访问用户联系人数据库的函数。请查看地址簿框架参考

AddressBookUI.framework

包含显示系统定义的联系人挑选界面和编辑界面的类。请查看iOS地址簿UI框架参考

AssetsLibrary.framework

包含显示用户照片和视频的类,请查看资源库框架参考

AudioToolbox.framework

包含处理音频流数据以及播放或录制音频的接口。请查看音频工具箱框架参考

AudioUnit.framework

包含加载并使用音频单元的接口。请查看音频单元框架参考.

AVFoundation.framework

包含播放或录制音频的Objective-C接口。请查看AV Foundation框架参考.。

CFNetwork.framework

包含通过WiFi或者蜂窝无线访问网络的接口。请查看CFNetwork框架参考

CoreAudio.framework

包含Core Audio框架使用的各种数据类型。请查看Core Audio 框架参考

CoreData.framework

包含管理应用程序数据模型的接口。请查看Core Data 框架参考

CoreFoundation.framework

提供一些基本软件服务,包括常见数据类型抽象、字符串实用工具、群体类型实用工具、资源管理以及偏好设置。请查看rovCore Foundation框架参考

CoreGraphics.framework

包含Quartz 2D接口。请查看Core Graphics 框架参考

CoreLocation.framework

包含确定用户方位信息的接口。请查看Core Location 框架参考

CoreMedia.framework

包含操作音频和视频的底层例程。请查看Core Media 框架参考

CoreMotion.framework

包含访问加速度计以及陀螺仪的数据的接口。请查看Core Motion 框架参考

CoreTelephony.framework

包含访问电话相关的信息的例程。请查看Core Telephony 框架参考

CoreText.framework

包含一个文本的布局渲染引擎。请查看Core Text参考集.。

CoreVideo.framework

包含操作音频和视频的底层例程。请不要直接使用该框架。

EventKit.framework

包含访问用户日历事件数据的接口。请查看Event Kit 框架参考

EventKitUI.framework

包含显示标准系统日历界面的类。请查看Event Kit UI 框架参考

ExternalAccessory.framework

包含与外设进行通讯的接口。请查看External Accessory 框架参考

Foundation.framework

包含Cocoa Foundation层的类和方法。请查看Foundation 框架参考

GameKit.framework

包含点对点连接管理接口。请查看Game Kit 框架参考

iAd.framework

包含在应用程序中显示广告的类。请查看iAd 框架参考

ImageIO.framework

包含读取或写入图像数据的类。请查看Image I/O 参考集

IOKit.framework

包含设备所使用的接口。请不要直接使用此框架。

MapKit.framework

包含将地图界面嵌入到应用程序的类,也可以用于查找地理编码反向坐标。请查看Map Kit框架参考

MediaPlayer.framework

包含显示全屏视频的接口。请查看Media Player 框架参考

MessageUI.framework

包含撰写和排队发送电子邮件信息的界面。请查看Message UI 框架参考

MobileCoreServices.framework

定义系统支持的统一类型标识符(UTIs)。

OpenAL.framework

包含OpenAL接口。OpenAL是一个跨平台的方位音频库。如需进一步了解,请访问http://www.openal.org

OpenGLES.framework

包含OpenGL ES接口。OpenGL ES框架是OpenGL跨平台2D和3D渲染库的跨平台版本。请查看OpenGL ES 框架参考

QuartzCore.framework

包含Core Animation接口。请查看Quartz Core 框架参考

QuickLook.framework

包含预览文件接口。请查看Quick Look 框架参考

Security.framework

包含管理证书、公钥私钥以及信任策略的接口。请查看Security框架参考

StoreKit.framework

包含用于处理与应用程序内购买相关的财务交易。请查看 Store Kit 框架参考

SystemConfiguration.framework

包含用于处理设备网络配置的接口。请查看System Configuration框架参考

UIKit.framework

包含iOS应用程序用户界面层使用的类和方法。请查看UIKit 框架参考

(二)常用的iOS SDK框架

Accelerate.framework 包含加速数学和DSP函数。

AddressBook.framework 包含直接访问用户联系人数据库的函数。

AddressBookUI.framework 包含显示系统定义的联系人挑选界面和编辑界面的类。

AssetsLibrary.framework 包含显示用户照片和视频的类

AudioToolbox.framework 包含处理音频流数据以及播放或录制音频的接口。

AVFoundation.framework 包含播放或录制音频的Objective-C接口。

AudioUnit.framework 包含加载并使用音频单元的接口。

CFNetwork.framework 包含通过WiFi或者蜂窝无线访问网络的接口。

CoreAudio.framework 包含Core Audio框架使用的各种数据类型。

CoreData.framework 包含管理应用程序数据模型的接口。

CoreFoundation.framework 提供一些基本软件服务,包括常见数据类型抽象、字符串实用工具、群体类型实用工具、资源管理以及偏好设置。

CoreGraphics.framework 包含Quartz 2D接口。

CoreLocation.framework 包含确定用户方位信息的接口。

CoreMedia.framework 包含操作音频和视频的底层例程。

CoreMotion.framework 包含访问加速度计以及陀螺仪的数据的接口。

CoreTelephony.framework 包含访问电话相关的信息的例程。

CoreText.framework 包含一个文本的布局渲染引擎。

CoreVideo.framework 包含操作音频和视频的底层例程。

EventKit.framework 包含访问用户日历事件数据的接口。

EventKitUI.framework 包含显示标准系统日历界面的类。

ExternalAccessory.framework 包含与外设进行通讯的接口。

Foundation.framework 包含Cocoa Foundation层的类和方法。

GameKit.framework 包含点对点连接管理接口。

iAd.framework 包含在应用程序中显示广告的类。

ImageIO.framework 包含读取或写入图像数据的类。

IOKit.framework 包含设备所使用的接口。

MapKit.framework 包含将地图界面嵌入到应用程序的类,也可以用于查找地理编码反向坐标。

MediaPlayer.framework 包含显示全屏视频的接口。

MessageUI.framework 包含撰写和排队发送电子邮件信息的界面。

MobileCoreServices.framework 定义系统支持的统一类型标识符(UTIs)。

OpenAL.framework 包含OpenAL接口。OpenAL是一个跨平台的方位音频库。

OpenGLES.framework包含OpenGL ES接口。OpenGL ES框架是OpenGL跨平台2D和3D渲染库的跨平台版本。

QuartzCore.framework 包含Core Animation接口。。

QuickLook.framework 包含预览文件接口。

Security.framework 包含管理证书、公钥私钥以及信任策略的接口。

StoreKit.framework 包含用于处理与应用程序内购买相关的财务交易。

SystemConfiguration.framework 包含用于处理设备网络配置的接口。

UIKit.framework 包含iOS应用程序用户界面层使用的类和方法。

参考: https://blog.csdn.net/bobo553443/article/details/78666760

上一篇下一篇

猜你喜欢

热点阅读