想学 IOS已久,但由于各项目太紧,另外因为比较懒,一直抽不出时间来学习。今天终于静下心,启动IOS学习计划。
工具准备:Mac一台,下载Xcode, 苹果实在太好了,什么东西都已经帮你做好了,连工具都集成好了。这点,android就显得太low了。
1. 了解一下IOS的四层结构, 由下往上依次是:Core OS(系统Lib层,SDK的调用), Core Services核心服务层, Media层以及Cocoa Touch, 这里,可以跟安卓的四层结构作个对比, android四层由下而上依次为:Linux Kernel, Libraries+dalvik, application framework, application
下面详细介绍一下四层结构的主要职能(以下内容来自http://blog.sina.com.cn/s/blog_62ba0fdd0100jupb.html):
1. Core OS 主要是用FreeBSD和Mach所改写的Darwin, 是开源、符合POSIX标准的一个Unix核心。这一层提供了整个iPhone OS的一些基础功能,比如:硬件驱动, 内存管理,程序管理,线程管理(POSIX),文件系统,网络(BSD Socket),以及标准输入输出等等,所有这些功能都会通过C语言的API来提供。另外,值得一题的是,这一层最具有UNIX色彩,如果你需要把 UNIX上所开发的程序移植到iPhone上,多半都会使用到Core OS的API。
核心OS层的驱动也提供了硬件和系统框架之间的接口。然而,由于安全的考虑,只有有限的系统框架类能访问内核和驱动。
iPhone OS提供了许多访问操作系统低层功能的接口集,iPhone 应用通过LibSystem库来访问这些功能,这些接口集如下所示:
(1)电话本框架(AddressBook.framework)提供了保存在手机设备中的电话本编程接口。开发者能使用该框架访问和修改存储在用户联系 人数据库里的记录。例如,一个聊天程序可以使用该框架获得可能的联系人列表,启动聊天的进程(Process),并在视图上显示这些联系人信息等。
(2)核心基础框架(CoreFoundation.framework)是基于C语言的接口集,提供iPhone应用的基本数据管理和服务功能。该框架 支持如下功能:
核心基础框架与基础框架是紧密相关的,它们为相同的基本功能提供了Objective-C接口。如果开发者混合使用Foundation Objects 和Core Foundation类型,就能充分利用存在两个框架中的"toll-free bridging"。toll-free bridging意味着开发者能使用这两个框架中的任何一个的核心基础和基础类型,例如Collection和字符串类型等。每个框架中的类和数据类型的 描述注明该对象是否支持toll-free bridged。如果是,它与哪个对象桥接(toll-free bridged)。
(3)CFNetwork框架(CFNetwork.framework)是一组高性能的C语言接口集,提供网络协议的面向对象的抽象。开发者可以使用 CFNetwork框架操作协议栈,并且可以访问低层的结构如BSD Sockets等。同时,开发者也能简化与FTP和HTTP服务器的通信,或解析DNS等任务。使用CFNetwork框架实现的任务如下所示:
(4)核心位置框架(Core Location Framework)主要获得手机设备当前的经纬度,核心位置框架利用附近的GPS、蜂窝基站或Wi- Fi信号信息测量用户的当前位置。iPhone地图应用使用这个功能在地图上显示用户的当前位置。开发者能融合这个技术到自己的应用中,给用户提供一些位 置信息服务。例如可以提供一个服务:基于用户的当前位置,查找附近的餐馆、商店或设备等。
(5)安全框架(Security Framework)iPhone OS除了内置的安全特性外,还提供了外部安全框架,从而确保应用数据的安全性。该框架提供了管理证书、公钥/私 钥对和信任策略等的接口。它支持产生加密安全的伪随机数,也支持保存在密钥链的证书和密钥。对于用户敏感的数据,它是安全的知识库(Secure Repository)。CommonCrypto接口也支持对称加密、HMAC和数据摘要。在iPhone OS里没有OpenSSL库,但是数据摘要提供的功能在本质上与OpenSSL库提供的功能是一致的。
(6)SQLite,开发者可以创建本地数据库文件,并管理这些 文件中的表格和记录。数据库SQLite为通用的目的而设计,但仍可以优化为快速访问数据库记录。访问数据库SQLite的头文件位 于
(7)支持XML,基础框架提供NSXMLParser类,解析XML文档元素。libXML2库提供操作XML内容的功能,这个开放源代码的库可以快速解析和编辑 XML数据,并且转换XML内容到HTML。访问libXML2库的头文件位于目录
(1)图像技术(Graphics Technologies)高质量图像是所有iPhone应用的一个重要的组成部分。任何时候,开发者可以采用UIKit 框架中已有的视图和功能以及预定义的图像来开发iPhone应用。然而,当UIKit 框架中的视图和功能不能满足需求时,开发者可以应用下面描述的技术和方法来制作视图。
① Quartz。核心图像框架(CoreGraphics.framework)包含了Quartz 2D画图API,Quartz与在Mac OS中采用的矢量图画引擎是一样先进的。Quartz支持基于路径(Path-based)画图、抗混淆(Anti-aliased)重载、梯度 (Gradients)、图像(Images)、颜色(Colors)、坐标空间转换(Coordinate-space Transformations)、pdf文档创建、显示和解析。虽然API是基于C语言的,它采用基于对象的抽象表征基础画图对象,使得图像内容易于保存和复用。
② 核心动画(Core Animation)。Quartz核心框架(QuartzCore.framework)包含CoreAnimation接口,Core Animation是一种高级动画和合成技术,它用优化的重载路径(Rendering Path)实现复杂的动画和虚拟效果。它用一种高层的Objective-C接口配置动画和效果,然后重载在硬件上获得较好的性能。Core Animation集成到iPhone OS 的许多部分,包括UIKit类如UIView,提供许多标准系统行为的动画。开发者也能利用这个框架中的Objective-C接口创建客户化的动画。
③ OpenGL ES。OpenGL ES框架(OpenGLES.framework)符合OpenGL ES v1.1规范,它提供了一种绘画2D和3D内容的工具。OpenGL ES 框架是基于C语言的框架,与硬件设备紧密相关,为全屏游戏类应用提供高帧率(high frame rates)。开发者总是要使用OpenGL框架的EAGL接口,EAGL接口是OpenGL ES框架的一部分,它提供了应用的OpenGL ES画图代码和本地窗口对象的接口。
(2)音频技术(Audio Technologies)iPhone OS的音频技术为用户提供了丰富的音频体验。它包括音频回放,高质量的录音和触发设备的振动功能等。iPhone OS的音频技术支持如下音频格式:AAC、Apple Lossless(ALAC)、A-law、IMA/ADPCM(IMA4)、Linear PCM、μ-law和Core Audio等。
① 核心音频(Core Audio Family)。核心音频框架家族(Core Audio family of frameworks)提供了音频的本地支持,如表16-1所示。Core Audio是一个基于C语言的接口,并支持立体声(Stereo Audio)。开发能采用iPhone OS 的Core Audio框架在iPhone 应用中产生、录制、混合和播放音频。开发者也能通过核心音频访问手机设备的振动功能。核心音频框架:
框架(Framework) |
服务(Service) |
CoreAudio.framework |
定义核心音频的音频数据类型 |
AudioUnit.framework |
提供音频和流媒体文件的 回放和录制,并且管理音 频文件和播放提示声音 |
AudioToolbox.framework |
提供使用内置音频单元服务, 音频处理模块 |
② OpenAL。iPhone OS 也支持开放音频库(Open Audio Library, OpenAL)。OpenAL是一个跨平台的标准,它能传递位置音频(Positional Audio)。开发者能应用OpenAL在需要位置音频输出的游戏或其他应用中实现高性能、高质量的音频。由于OpenAL是一个跨平台的标准,采用OpenAL的代码模块可以平滑地移植到其他平台。
(3)视频技术(Video Technologies)iPhone OS通过媒体播放框架(MediaPlayer.framework)支持全屏视频回放。媒体播放框架支持的视频文件格式包括.mov, .mp4,.m4v和.3gp,并应用如下压缩标准:
① H.264 Baseline Profile Level 3.0 video,在30 f/s 的情况下分辨率达到640×480像素。注意:不支持B frames;
② MPEG4规范的视频部分;
③ 众多的音频格式,包含在音频技术的列表里,如AAC、Apple Lossless (ALAC)、A-law、IMA/ADPCM(IMA4)、线性PCM、μ-law和Core Audio等。
4. Cocoa Touch 是Objective-C的API, 其中最核心的部分是UIKit.Framework,应用程序界面上的各种组件,全是由它来提供呈现的,除此之外它还负责处理屏幕上的多点触摸事件,文字的输出,图片,网页的显示,相机或文件的存取,以及加速感应的部分等。具体介绍如下:
(1)UIKit框架(UIKit.framework)包含Objective-C程序接口,提供实现图形,事件驱动的iPhone应用的关键架构。 iPhone OS中的每一个应用采用这个框架实现如下核心功能:
(2)基础框架(Foundation Framework)支持如下功能:
(3)电话本UI框架(Address Book UI Framework)是一个Objective-C标准程序接口,主要用来创建新联系人,编辑和选择 电话本中存在的联系人。它简化了在iPhone应用中显示联系人信息,并确保所有应用使用相同的程序接口,保证应用在不同平台的一致性。
第一次,就学习到这里。。。哈哈。。