iOS iPhone SDK 包含哪些东西?

iPhone SDK 包含哪些东西?

第一部分:html

在使用Intel芯片的Macintosh计算机开发iOS应用程序所需的所有接口、工具以及资源全都包含于iPhone SDK。ios

苹果公司将大部分系统接口发布在框架这种特殊的数据包。一个框架就是一个目录,它包含一个动态共享库以及使用这个库所需的资源(例如头文件、图像以 及帮助应用程序等)。若是要使用某个框架,则须要将其连接到应用程序工程,这一点和使用其余共享库类似。另外,您还须要告知开发工具何处能够找到框架头文 件以及其余资源。正则表达式

除了使用框架,苹果公司还经过标准共享库的形式来发布某些技术。 因为iOS以UNIX为基础,操做系统底层的许多技术都源自开源技术,这些技术的许多接口能够从标准库和接口目录访问。编程

SDK中还包含下述重要组件:数组

Xcode工具 -提供iOS应用程序开发工具,包括以下关键应用程序:缓存

Xcode -是一个集成开发环境,它负责管理应用程序工程。您能够经过它来编辑、编译、运行以及调试代码。Xcode还集成了许多其余工具,它是开发过程当中使用到的主要应用程序。安全

Interface Builder -以可视化方式组装用户接口的工具。经过Interface Builder建立出来的接口对象将会保存到某种特定格式的资源文件,而且在运行时加载到应用程序。服务器

Instruments - 运行时性能分析和调试工具。您能够经过 Instruments 收集应用程序运行时的行为信息,并利用这些信息来确承认能存在的问题。app

iPhone模拟器 -是Mac OS X平台应用程序,它对iOS技术栈进行模拟,以便于您能够在基于Intel的Macintosh计算机上测试iOS应用程序。框架

iOS参考库- SDK默认包含iOS的参考文档。另外,若是文档库有更新,则更新会被自动下载到本地。经过选择Help > Developer Documentation就能够看到参考库。

SDK提供编写应用程序所需的软件,并且Xcode和Instruments容许您直接与绑定设备进行交互,在目标硬件运行并调试代码。若是您须要在实际设备上开发,请加入苹果公司的收费iPhone开发者计划,并将设备配置成开发用途。如需进一步了解iPhone开发者计划,请向ITCH-ios 培训专业老师咨询。

若是您须要了解如何安装iPhone SDK以及如何使用iPhone SDK开发iOS应用程序,则请参考iOS开发指南。若是进一步了解iOS的框架,而且但愿了解何处能够找到底层的系统库,则请参考“iOS框架”。【ITCH-ios 培训专业学院】

 

 

第二部分:

iPhone SDK 包含哪些东西?

苹果公司将大部分系统接口发布在框架这种特殊的数据包。一个框架就是一个目录,它包含一个动态共享库以及使用这个库所需的资源(例如头文件、图像以 及帮助应用程序等)。若是要使用某个框架,则须要将其连接到应用程序工程,这一点和使用其余共享库类似。另外,您还须要告知开发工具何处能够找到框架头文 件以及其余资源

除了使用框架,苹果公司还经过标准共享库的形式来发布某些技术。 因为iOS以UNIX为基础,操做系统底层的许多技术都源自开源技术,这些技术的许多接口能够从标准库和接口目录访问。

 

Cocoa Touch 层

Cocoa Touch层包含建立 iOS应用程序所需的关键框架。上至实现应用程序可视界面,下至与高级系统服务交互,都须要该层技术提供底层基础。在开发应用程序的时候,请尽量不要使用更底层的框架,尽量使用该层的框架。

 

多任务

尽管应用程序进入后台就会被挂起,但能够经过下述的技术让其在后台继续运行:

  • 应用程序能够请求必定的时间完成某些重要的任务。

  • 应用程序能够声明自身支持的某种服务须要得到按期后台执行时间。

  • 应用程序可使用本地通告在指定时间向用户发通知。这种方式对于应用程序是否运行没有要求。

无论应用程序是被挂起仍是在后台运行,支持多任务不须要付出额外的工做。可是在某些状况(例如内存不足)下,应用程序可能会被结束运行。所以,应用 程序应该能够在任什么时候候退出。这就意味着许多在退出应用程序时须要执行的任务必须改成在应用程序切换到后台的时候执行。这就要求您在应用程序委托中实现一 些新的方法以响应程序的状态切换。

 

数据保护

和敏感用户数据打交道的应用程序可使用设备内建加密功能(有些设备可能不提供内建加密功能)对数据进行保护。若是应用程序指定某个文件受保护,系 统会以加密格式将该文件保存在磁盘。当设备锁住的时候,您的应用程序以及其余潜在的闯入者都不能访问该文件,而当用户解锁设备后,系统会生成一份密钥以便 您的应用程序就访问该文件。

如需实现数据保护,应用程序应在待保护数据的建立和管理方式下一些功夫。它必须可以在数据建立之时保证其安全,并且须要适配设备上锁或未上锁形成的文件可访问性的变化。

 

苹果推送通知服务

从设计角度看,让应用程序支持推送通知包含两个部分。首先,iOS应用程序须要请求系统向其发送通知,而后要合理配置应用程序委托使其能够对通知进行恰当处理。这些工做能够经过应用程序委托以及UIApplication对象合做完成。第二,您须要提供一个服务器端进程用于产生最初的通知。该进程运行在您本身的本地服务器,它和苹果推送通知服务协同工做以产生最初的通知。

 

本地通知

iOS 4.0引入了本地通知。本地通知是对已有推送通知的补充,通用程序能够经过它在本地生成通知,再也不须要依赖外部服务器。当有重要的事件发生时,后台应用程 序能够利用本地通知得到用户关注。举个例子,运行于后台的导航应用程序可使用本地通知提醒用户要转弯。应用程序也能够安排在将来的某个时刻向用户发送本 地通知,并且发送这些通知并不要求应用程序处于运行状态。

本地通知的优势是它独立于您的应用程序。一旦某个通知被安排好后,系统会负责通知发送。并且在发送通知的时候,您的应用程序无需处于运行状态

 

手势识别器

iOS 3.2引入了手势识别器。手势识别器是一个绑定到视图的对象,用于检测常见的手势类型。将手势识别器绑定到视图后,您能够告诉它某个手势发生的时候执行何 种动做。以后,手势识别器就能够对原始事件进行跟踪,根据系统定义的试探方式识别手势。在引入手势识别器前,若是要识别一个手势,您须要跟踪视图的原始触 摸事件流,而后再使用复杂的试探方法来判断这些事件是否表示某种手势。

如今,UIKit框架中包含一个UIGestureRecognizer 类,它定义了全部手势识别器的基本行为。您可使用自定义的手势识别器子类或者系统定义的某个子类处理下面这些标准手势:

  • 拍击 (任意次数的拍击)

  • 向里或向外捏 (用于缩放)

  • 摇动或者拖拽

  • 擦碰 (以任意方向)

  • 旋转 (手指朝相反方向移动)

  • 长按

如需进一步了解您可使用的手势识别器

 

文件共享支持

应用程序可使用文件共享让用户访问程序的用户数据文件。文件共享容许应用程序经过iTunes向用户显露应用程序/Documents目录的内容。这样,用户就能够在iPad和桌面计算机来回移动文件。可是,该功能不容许应用程序和同一设备上的其余应用程序共享文件。若是但愿在程序间共享文件,请使用剪贴板或者文档交互控制器对象。

您能够经过以下步骤来让应用程序支持文件共享:

  1. 在应用程序的Info.plist文件中添加UIFileSharingEnabled键,并将键值设置为YES

  2. 将您但愿共享的文件放在应用程序的Documents目录。

  3. 一旦设备插入到用户计算机,iTunes 9.1就会在选中设备的Apps标签中显示一个File Sharing区域。

  4. 此后,用户就能够向该目录添加文件或者将文件移动到桌面计算机中。

若是应用程序支持文件共享,当文件添加到Documents目录后,应用程序应该可以识别并作出适当响应。例如说,应用程序能够将新文件的内容显示界面上。请不要向用户展示目录的文件列表并询问他们但愿对文件执行什么操做。

 

点对点服务

在iOS 3.0 及后续版本,Game Kit框架支持经由蓝牙进行点对点链接。您可使用点对点链接启动与某个邻近设备的通信会话,也可用它实现多种多玩家游戏的常见特性。虽然点对点链接主要应用于游戏,但您也可将之应用于其余类型应用程序。

 

标准系统视图控制器

Cocoa Touch层许多框架含有展示标准系统界面的视图控制器。咱们提倡您在应用程序中使用这些视图控制器,这样可让您的程序和系统具备一致的用户体验。若是您须要执行下述任务,请从相应的框架中选择一个视图控制器使用:

  • 显示或者编辑联系人信息 - 请使用Address Book UI框架中的视图控制器。

  • 建立或者编辑日历事件 - 请使用Event Kit UI框架的视图控制器。

  • 建立email或者SMS消息 - 请使用Message UI框架中的视图控制器。

  • 打开或者预览一份文件的内容 - 请使用UIKit框架中的UIDocumentInteractionController类。

  • 从用户的照片库选取一张照片 - 请使用UIKit框架中的 UIImagePickerController 类。

  • 拍摄视频片断 - 请使用UIKit框架中的UIImagePickerController类。

如需了解如何选择使用视图控制器,请查看iOS视图控制器编程指南。如需了解特定视图控制器所展示的界面,请查看相应的框架参考。

 

外部设备支持

安装iOS 3.2的设备可经过一组设备支持的线缆链接一个外部显示设备。当外部设备连上后,应用程序就可使用其显示屏显示内容。屏幕的信息,包括屏幕可以支持的分辨率均可经过UIKit框架的接口获取。您也能够经过该框架将应用程序窗口关联到某个屏幕。

  • UIScreen 类用于获取当前全部屏幕(包括设备主屏幕)的屏幕对象。屏幕对象包含屏幕的属性信息(包括将屏幕的尺寸和像素比例也考虑在内的屏幕特征)。

  • 您能够从UIScreenMode 类得到某个具备特定尺寸像素比例的屏幕的信息。

  • 您能够将窗口(使用UIWindow类来表示)指定到某个特定的屏幕。若是您须要对内容做镜像显示,则须要提供两个独立的窗口,而后再在其中显示相同内容。

如需进一步了解上述类可提供的支持,请查看UIKit框架参考中相应的类描述。

 

Cocoa Touch 层包含的框架

Address Book UI 框架

Event Kit UI 框架

Game Kit 框架

iAd 框架

Map Kit 框架

iOS 3.0导入了 Map Kit框架 (MapKit.framework) ,该框架供一个可被嵌入到应用程序的地图界面,该界面包含一个能够滚动的地图视图。您能够在视图中添加定制信息,并可将其嵌入到应用程序视图,经过编程的 方式设置地图的各类属性(包括当前地图显示的区域以及用户的方位)。您也可使用定制标注或标准标注(例如使用测针标记)突出显示地图中的某些区域或额外 的信息。

在iOS 4.0系统中,该框架开始支持可拖动标注以及定制覆盖层。可拖动标注容许您经过编程方式或经过用户交互方式重定位某个标注的位置。覆盖层可用于建立多个点 组成的复杂地图标注。地图表面诸如公交路线、选举地图、公园边界或者气象信息(例如雷达数据)等可使用覆盖层进行显示。

如需进一步了解Map Kit框架中的类,请查看Map Kit 框架参考

Message UI 框架

UIKit 框架

媒体层

图形技术

建立应用程序最简单最有效的方法是使用事先渲染过的图片,搭配上标准视图以及UIKit框架的控件,而后把绘制任务交给系统来执行。可是在某些状况 下,您可能须要一些UIKit所不具备的功能,并且须要定制某些行为。在这种状况下,您可使用下述技术管理应用程序的图形内容:

  • Core Graphics (也被称为Quartz),用于处理本地2D向量渲染和图片渲染。

  • Core Animation ( Quartz Core框架的一部分),为动画视图和其余内容提供更高级别支持。

  • OpenGL ES,为使用硬件加速接口的2D和3D渲染提供支持。

  • Core Text,提供一个精密的文本布局和渲染引擎。

  • Image I/O,提供读取及编写大多数图形格式的接口。

  • 资产库框架(Assets Library framework),可用于访问用户照片库中的照片和视频。

大多数应用程序应该无需改动,或者只需作不多修改,即可运行在具有高分辨率屏幕的设备。由于在绘图或者操做视图的时候,您所指定的座标值会被映射到 逻辑座标系统,它和底层屏幕分辨率没有关联。并且绘制的内容会自动根据须要按比例缩放,以此来支持高分辨率屏幕。对基于向量进行绘制的代码来讲,系统框架 会自动使用额外的像素来改善图画的内容,使其变得更清晰。若是应用程序中使用了图片,则能够利用UIKit自动加载现有图片的高分辨率版本。

音频技术

请记住,要尽量地选取高级框架,由于它们能够简化播放音频所需的工做。下面列出的框架从高级到低级排列,,媒体播放器框架(Media Player framwork)提供的是最高级的接口:

  • 媒体播放器框架。该框架可让访问用户的iTume库变得很容易,而且支持播放曲目和播放列表。

  • AV Foundation框架。它提供一组简单易用的Objective-C接口,可用于管理音频的播放或录制。.

  • OpenAL框架。它提供一组跨平台,用于发布方位音频的接口。

  • Core Audio框架。它提供的接口简单而精密,可用于播放或录制音频内容。您可使用这些接口播放系统的警报声音、触发备的震动功能、管理多声道的缓冲和播放、对音频内容进行流化处理。

 

视频技术

选择视频技术的时候,请尽量选择高级框架,由于高级框架能够简化为提供对某种功能的支持所需的工做。下面列出的框架由高级到低级排列。其中,媒体播放器框架提供最高级的接口:

  • 媒体播放器框架,它提供一组易于使用的接口,可用于播放应用程序中全屏或部分屏的电影。

  • AV Foundation框架,它提供一组Objective-C接口,能够对电影的捕捉和播放进行管理。

  • Core Media框架,它对较高级框架使用的底层类型进行描述,同时也提供一些底层接口,它们用于对媒体进行处理。

 

Core Services 层

Core Services层为全部的应用程序提供基础系统服务。可能应用程序并不直接使用这些服务,但它们是系统不少部分赖以建构的基础。

下面的部分描述一些比较常见特性,也许您正打算让您的应用程序支持这些特性。

块对象

Grand Central Dispatch

应用程序内购买(In App Purchase)

定位服务

SQLite

XML 支持

 

Core Foundation 框架

Core Foundation框架 (CoreFoundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能。下面列举该框架支持进行管理的数据以及可提供的服务:

  • 群体数据类型 (数组、集合等)

  • 程序包

  • 字符串管理

  • 日期和时间管理

  • 原始数据块管理

  • 偏好管理

  • URL及数据流操做

  • 线程和RunLoop

  • 端口和soket通信

Core Foundation框架和Foundation框架紧密相关,它们为相同功能提供接口,但Foundation框架提供Objective-C接口。如 果您将Foundation对象和Core Foundation类型掺杂使用,则可利用两个框架之间的 “toll-free bridging”。所谓的Toll-free bridging是说您能够在某个框架的方法或函数同时使用Core Foundatio和Foundation 框架中的某些类型。不少数据类型支持这一特性,其中包括群体和字符串数据类型。每一个框架的类和类型描述都会对某个对象是否为 toll-free bridged,应和什么对象桥接进行说明。

 

Foundation 框架

Foundation框架 (Foundation.framework)为 Core Foundation框架的许多功能提供Objective-C封装。您能够参考Core Foundation框架了解前面对Core Foundation框架的描述。 Foundation框架为下述功能提供支持:

  • 群体数据类型 (数组、集合等)

  • 程序包

  • 字符串管理

  • 日期和时间管理

  • 原始数据块管理

  • 偏好管理

  • URL及数据流操做

  • 线程和RunLoop

  • Bonjour

  • 通信端口管理

  • 国际化

  • 正则表达式匹配

  • 缓存支持

 

Core OS 层

Accelerate 框架

External Accessory 框架

Security 框架

System

 

iOS 的框架

设备中的框架

表B-1描述iOS设备提供的框架,它们位于<Xcode>/Platforms/iPhoneOS.platform/Developer/SDKs/<iOS_SDK>/System/Library/Frameworks目录。路径中的<Xcode>表示Xcode的安装目录, <iOS_SDK>则表示目标SDK版本。

模拟器的框架

设备和模拟器的框架稍有区别。模拟器将几个Mac OS X框架做为其自身实现的一部分。另外,因为系统的限制,设备框架的确切接口有可能和模拟器框架稍有不一样。

系统库

请注意,iOS系统可能没有将Core OS和Core Services层某些特殊的库打包成框架,而是将其做为动态库放在系统的/usr/lib 目录。动态共享库经过.dylib扩展名标识,其相应的头文件位于/usr/include目录。

全部版本的iPhone SDK都包含一份安装在系统的动态共享库本地副本。这些副本被安装在您的开发系统,您能够从XCode工程进行连接。若是您须要查看某个版本的动态库列表,请查看<Xcode>/Platforms/iPhoneOS.platform/Developer/SDKs/<iOS_SDK>/usr/lib。在这个路径中,<Xcode>表示Xcode的安装目录,<iOS_SDK>表示您当时正在使用某个版本的SDK。

iOS使用符号连接来指向程序库的最近版本。在连接某个动态共享库的时候,请使用符号连接而不要使用动态库特定版本连接。由于在未来的iOS版本中,库的版本可能会发生改变。若是您的软件链接到某个特定的版本,而那个版本可能已经不存在于用户的系统当中,那就会出问题。

相关文章
相关标签/搜索