1.Cocoa Foundation:
NSDictionary
NSArray
NSString2.Core Foundation:
CFDictionaryRef
CFArrayRef
CFStringRef-
3.区别:
-
3.1
- 3.1.1 Core Foundation中的数据类型是纯C,不是面向对象;
- 3.1.2 Cocoa Foundation中的常用的数据类型是OC,更加面向对象;
-
3.2 它们都能进行字符串,数组,字典操作;
- 3.2.1 Core Foundation使用C语言的函数操作;
- 3.2.2 Cocoa Foundation使用面向对象操作的;
-
3.3
- 3.3.1 Core Foundation框架 (Core Foundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能。下面列举该框架支持进行管理的数据以及可提供的服务:
- 3.3.1.1 群体数据类型 (数组,集合等);
- 3.3.1.2 程序包;
- 3.3.1.3 字符串管理;
- 3.3.1.4 日期和时间管理;
- 3.3.1.5 原始数据块管理;
- 3.3.1.6 偏好管理;
- 3.3.1.7 URL及数据流操作;
- 3.3.1.8 线程和RunLoop;
- 3.3.1.9 端口和socket通讯;
- 3.3.2 Core Foundation框架和Cocoa Foundation框架紧密相关,它们为相同功能提供接口,但Cocoa Foundation框架提供Objective-C接口。如果您将Cocoa Foundation对象和Core Foundation类型掺杂使用,则可利用两个框架之间的 “toll-free bridging”。所谓的Toll-free bridging是说您可以在某个框架的方法或函数同时使用Core Foundation和Cocoa Foundation框架中的某些类型。很多数据类型支持这一特性,其中包括群体和字符串数据类型。每个框架的类和类型描述都会对某个对象是否为toll-free bridged,应和什么对象桥接进行说明。
- 3.3.3 在CocoaFoundation和CoreFoundation数据之间进行转换(没有任何内存管理,只是简单的转换)
- 3.3.1 Core Foundation框架 (Core Foundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能。下面列举该框架支持进行管理的数据以及可提供的服务:
-
NSString *str = @”a”;
CFStringRef str2 = (__bridge CFStringRef)(str);
NSArray *array0 = [[NSArray alloc] init];
CFArrayRef array1 = (__bridge_retained CFArrayRef)array0;
[array0 release];
CFArrayRef array2 = CFArrayCreate(NULL,NULL,10,NULL);
NSArray *array3 = (__bridge_transfer NSArray *)array2;
CFRelease(array2);
* (__bridge <#type#>)expression
* (__bridge_retained <#CF TYPE#>) expression
// Foundation的数据类型 ----> CoreFoundation的数据类型
* (__bridge_transfer <#Objective-C type#>) expression
// CoreFoundation的数据类型 ----> Foundation的数据类型