热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

iOS系统架构&&常用framework

整理自互联网,感谢原文作者!1.iOS基于UNIX系统,因此从系统的稳定性上来说它要比其他操作系统的产品好很多2.iOS的系统架构分为四层,由上到下一次为:可触摸层(CocoaTo

整理自互联网,感谢原文作者!

1.iOS基于UNIX系统,因此从系统的稳定性上来说它要比其他操作系统的产品好很多

 

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

(1)触摸层:为应用程序开发提供了各种常用的框架并且大部分框架与界面有关,本质上来说它负责用户在iOS设备上的触摸交互操作。它包括以下这些组件:

Multi-Touch Events  Core Motion   Camera

View Hierarchy Localization Alerts

Web Views Image Picker Multi-Touch Controls

(补充new:可触摸层主要提供用户交互相关的服务如界面控件、事件管理、通知中心、地图,包含

  • UIKit(界面相关)
  • EventKit(日历事件提醒等)
  • Notification Center(通知中心)
  • MapKit(地图显示)
  • Address Book(联系人)
  • iAd(广告)
  • Message UI(邮件与SMS显示)
  • PushKit(iOS8新push机制)

 (2)媒体层:通过它我们可以在应用程序中使用各种媒体文件,进行音频与视频的录制,图形的绘制,以及制作基础的动画效果。它包括以下这些组件:

Core Audio     OpenGL    Audio Mixing

Audio Recording Video Playback JPG,PNG,TIFF

PDF Quartz Core Animation

OpenGL ES

(补充new:媒体层主要提供图像引擎、音频引擎、视频引擎框架。

  • 图像引擎(Core Graphics、Core Image、Core Animation、OpenGL ES)
  • 音频引擎 (Core Audio、 AV Foundation、OpenAL)
  • 视频引擎(AV Foundation、Core Media)

(3)核心服务层:我们可以通过它来访问iOS的一些服务。它包括以下这些组件:

Collections     Address Book   Networking

File Access SQLite Core Location

Net Services Threading Preferences

URL Utilities

(补充new:核心服务层为程序提供基础的系统服务例如网络访问、浏览器引擎、定位、文件访问、数据库访问等,主要包含以下框架:

  • CFNetwork(网络访问)
  • Core Data(数据存储)
  • Core Location(定位功能)
  • Core Motion(重力加速度,陀螺仪)
  • Foundation(基础功能如NSString)
  • Webkit(浏览器引擎)
  • Javascript(Javascript引擎)

 

(4)核心操作系统层包括:内存管理、文件系统、电源管理以及一些其他的操作系统任务。它可以直接和硬件设备进行交互。核心操作系统层包括以下这些组件:

OS X Kernel    Mach 3.0    BSD

Sockets Power Mgmt File System

Keychain Certificates Security

Bonjour

(补充new:核心系统层提供为上层结构提供最基础的服务如操作系统内核服务、本地认证、安全、加速等。

  • 操作系统内核服务(BSD sockets、I/O访问、内存申请、文件系统、数学计算等)
  • 本地认证(指纹识别验证等)
  • 安全(提供管理证书、公钥、密钥等的接口)
  • 加速 (执行数学、大数字以及DSP运算,这些接口iOS设备硬件相匹配)

3.Cocoa Touch简介

(1)在最上层Cocoa Touch层中的很多技术都是基于Objective-C语言的。Objective-C语言为iOS提供了集合、文件管理、网络操作等支持。比如UIKit框架,它为应用程序提供了各种可视化组件,比如像窗口(Window)、视图(View)和按钮组件(UIButton)。Cocoa Touch层中的其他框架,对我们在应用程序中的开发来说也是非常有用的,如访问用户通信录功能框架、获取照片信息功能的框架、负责加速感应器和三维陀螺仪等硬件支持的框架。

4.Framework--应用程序框架

什么是框架?本质上来说它是帮助我们完成各种特定功能的软件库。

我们编写的应用程序项目,都是从Cocoa Touch层开始的,具体来说就是从UIKit Framework开始的。当在编写程序的过程中需要用到一些特殊功能的时候,我们应该从框架的最顶端技术开始寻找相应的框架,只有在上层结构无法解决时,才能使用其下层的技术。其实,顶层的框架已经涵盖了我们绝大多数需要的功能。

下列表格列出了一些常用的iOS SDK框架。

                  

 常用的iOS SDK框架:

框架名称

    能

AddressBook.framework

提供访问存储核心数据库中用户联系人信息的功能

AddressBookUI.framework

提供一个用户界面,用于显示存储在地址簿中的联系人信息

AudioToolbox.framework

提供音频录制和回放的底层API,同时也负责管理音频硬件

AudioUnit.framework

提供一个接口,让我们的应用程序可以对音频进行处理

AVFoundation.framework

提供音频录制和回放的底层API,同时也负责管理音频硬件

CFNetwork.framework

访问和配置网络,像HTTP、FTP和Bonjour Services

CoreFoundation.framework

提供抽象的常用数据类型,如 Unicode strings、XML、URL等

CoreGraphics.framework

提供2D绘制的基于C的API

 

 

                 续表:

框架名称

    能

CoreLocation.framework

使用GPS和Wi-Fi获取位置信息

Foundation.framework

提供Object-C的基础类(像NSObject)、

基本数据类型和操作系统服务等

GameKit.framework

为游戏提供网络功能;点对点互联和游戏中的语音交流

MapKit.framework

为应用程序提供内嵌地图的接口

MediaPlayer.framework

提供播放视频和音频的功能

MessageUI.framework

提供视图控制接口用以处理E-mail和短信

OpenGLES.framework

提供简洁而高效的绘制2D和3D图形的OpenGL API子集

QuartzCore.framework

提供动画特效以及通过硬件进行渲染的能力

StoreKit.framework

为应用程序提供在程序运行中消费的支持

SystemConfiguration.framework

检测当前网络是否可用和硬件设备状态的能力

UIKit.framework

创建和管理应用程序的用户界面

 
 
参考资料:
http://www.jianshu.com/p/58bc11c800e4
http://www.cnblogs.com/leo_wl/p/3629606.html
 

推荐阅读
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 本文探讨了领域驱动设计(DDD)的核心概念、应用场景及其实现方式,详细介绍了其在企业级软件开发中的优势和挑战。通过对比事务脚本与领域模型,展示了DDD如何提升系统的可维护性和扩展性。 ... [详细]
  • Startup 类配置服务和应用的请求管道。Startup类ASP.NETCore应用使用 Startup 类,按照约定命名为 Startup。 Startup 类:可选择性地包括 ... [详细]
  • 本文探讨了在Windows Server 2008环境下配置Tomcat使用80端口时遇到的问题,包括端口被占用、多项目访问失败等,并提供详细的解决方法和配置建议。 ... [详细]
  • 本文介绍了ArcXML配置文件的分类及其在不同服务中的应用,详细解释了地图配置文件的结构和功能,包括其在Image Service、Feature Service以及ArcMap Server中的使用方法。 ... [详细]
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • Struts与Spring框架的集成指南
    本文详细介绍了如何将Struts和Spring两个流行的Java Web开发框架进行整合,涵盖从环境配置到代码实现的具体步骤。 ... [详细]
  • 本文介绍了如何利用 Spring Boot 和 Groovy 构建一个灵活且可扩展的动态计算引擎,以满足钱包应用中类似余额宝功能的推广需求。我们将探讨不同的设计方案,并最终选择最适合的技术栈来实现这一目标。 ... [详细]
  • 本文深入探讨了UNIX/Linux系统中的进程间通信(IPC)机制,包括消息传递、同步和共享内存等。详细介绍了管道(Pipe)、有名管道(FIFO)、Posix和System V消息队列、互斥锁与条件变量、读写锁、信号量以及共享内存的使用方法和应用场景。 ... [详细]
  • 本文档汇总了Python编程的基础与高级面试题目,涵盖语言特性、数据结构、算法以及Web开发等多个方面,旨在帮助开发者全面掌握Python核心知识。 ... [详细]
  • Google排名优化-面向Google(Search Engine Friendly)的URL设计 ... [详细]
  • NFS(Network File System)即网络文件系统,是一种分布式文件系统协议,主要用于Unix和类Unix系统之间的文件共享。本文详细介绍NFS的配置文件/etc/exports和相关服务配置,帮助读者理解如何在Linux环境中配置NFS客户端。 ... [详细]
  • 本文将详细探讨 Linux 系统中的 netstat 命令,该命令用于查看网络状态和连接情况。通过了解 IP 地址和端口的基本概念,我们将更好地理解如何利用 netstat 命令来监控和管理网络服务。 ... [详细]
  • 优化局域网SSH连接延迟问题的解决方案
    本文介绍了解决局域网内SSH连接到服务器时出现长时间等待问题的方法。通过调整配置和优化网络设置,可以显著缩短SSH连接的时间。 ... [详细]
author-avatar
zhangiloveyou
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有