IOS 框架
什么是Cocoa?
Cocoa不是一种编程语言(它可以运行多种编程语言),它也不是一个开发工具(通过命令行我们仍然可以开发Cocoa程序),它是创建Mac OS X和IOS程序的原生面向对象API,为这两者应用提供了编程环境。
Cocoa本身是一个框架的集合,它包含了众多子框架,其中最重要的要数“Foundation”和“UIKit”。前者是框架的基础,和界面无关,其中包含了大量常用的API;后者是基础的UI类库,在IOS开发中会经常用到。
iOS开发是基于cocoa框架的,主要包括5层,从上到下依次是Application,Cocoa Touch,Media,Core Services,Core OS, 其中Core Frameworks包括UIKit及Foundation分别位于Cocoa Touch层和Core Services层。
UIKit是UI类库。
Fundation是框架基础。
其实所有的Mac OS X和IOS程序都是由大量的对象构成,而这些对象的根对象都是NSObject,NSObject就处在Foundation框架之中
1.Fundation:
作为通用的面向对象的函数库,Foundation提供了字符串,数值的管理,容器及其枚举,分布式计算,事件循环,以及一些其它的与图形用户界面没有直接关系的功能。其中用于类和常数的“NS”前缀来自于Cocoa的来源,NeXTSTEP。它可以在Mac OS X和iOS中使用。
“应用程序工具包”,或称AppKit(Application Kit)是直接衍生自NeXTSTEP的AppKit的。它包含了程序与图形用户界面交互所需的代码。它是基于Foundation建立的,也使用“NS”前缀。它只能在Mac OS X中使用。
“用户界面工具包”,或称UIKit(User Interface Kit),是用于iOS的图形用户界面工具包。与AppKit不同,它使用“UI”的前缀。
通常我们会将他们分为几类:
1.值对象
2.集合
3.操作系统服务:文件系统、URL、进程通讯
4.通知
5.归档和序列化
6.表达式和条件判断
7.Objective-C语言服务
2.Core Foundation框架
Core Foundation框架 (CoreFoundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能。下面列举该框架支持进行管理的数据以及可提供的服务:
1.群体数据类型 (数组、集合等)
2.程序包
3.字符串管理
4.日期和时间管理
5.原始数据块管理
6.偏好管理
7.URL及数据流操作
8.线程和RunLoop
9.端口和soket通讯
Core Foundation框架和Foundation框架紧密相关,它们为相同功能提供接口,但Foundation框架提供Objective-C接口。如果您将Foundation对象和Core Foundation类型掺杂使用,则可利用两个框架之间的 “toll-free bridging”。所谓的Toll-free bridging是说您可以在某个框架的方法或函数同时使用Core Foundatio和Foundation 框架中的某些类型。很多数据类型支持这一特性,其中包括群体和字符串数据类型。每个框架的类和类型描述都会对某个对象是否为 toll-free bridged,应和什么对象桥接进行说明。
Objective-C指针与CoreFoundation指针之间的转换】
ARC仅管理Objective-C指针(retain、release、autorelease),不管理CoreFoundation指针,CF指针由人工管理,手动的CFRetain和CFRelease来管理,注,CF中没有autorelease。
CocoaFoundation指针与CoreFoundation指针转换,需要考虑的是所指向对象所有权的归属。ARC提供了3个修饰符来管理。
1. __bridge,什么也不做,仅仅是转换。此种情况下:
i). 从Cocoa转换到Core,需要人工CFRetain,否则,Cocoa指针释放后, 传出去的指针则无效。
ii). 从Core转换到Cocoa,需要人工CFRelease,否则,Cocoa指针释放后,对象引用计数仍为1,不会被销毁。
2. __bridge_retained,转换后自动调用CFRetain,即帮助自动解决上述i的情形。
3. __bridge_transfer,转换后自动调用CFRelease,即帮助自动解决上述ii的情形。
3.Cocoa Touch框架
Cocoa Touch框架包含创建世界一流 iOS 应用程序所需的所有框架,从 3D 图形、专业音频到网络,甚至提供特殊设备访问 API 以控制摄像机或从 GPS 硬件获取位置。Cocoa Touch 既包含只需要几行代码就可以完成全部任务的强大的 Objective-C 框架,也在需要时提供基础的 C 语言 API 来直接访问系统。这些框架示例包括:
1.Core Animation:通过 Core Animation,您就可以通过基于组合独立图层的简单编程模型来创建丰富的用户体验。
2.Core Audio: Core Audio 是播放、处理和录制音频的专业级技术,能够轻松为您的应用程序添加强大的音频功能。
3.Coce Data:Core Data 提供面向对象的数据管理解决方案,该方案易于使用和理解,甚至可处理任何应用或大或小的数据模型。
Cocoa Touch框架主要包含:UIKit,MapKit,Game Kit,Message UI/Address Book UI
(1) UIKit 负责启动和结束应用程序,控制界面和多触点事件
(2)Map Kit 提供地图的相关服务,定位或者区域检测等
(3)Game Kit 创建和使用网络机制
(4)Message UI/Address Book UI 提供操作电子邮件和联系人的信息
Foundation类层次的根是NSObject类,它(和NSObject及NSCopying协议一起)定义了基本的对象属性和行为。NSObject是一个抽象类,该类被其他类继承来产生对象。Foundation框架的剩余部分由几组相互关联的类和一些独立的类组成。