学习小结8-----CoreFoundation当中的类型跟Foundation框架中的类型互相转换
2015-09-02 08:42
477 查看
CoreFoundation当中的类型跟Foundation框架中的类型互相转换
//COREFOUNDATION框架
//创建的是一个CoreFoundation框架中的类型
//CoreFoundation当中的类型可以跟Foundation框架中的类型互相转换
// CFStringRef str = CFStringCreateWithFormat(kCFAllocatorDefault, NULL, (CFStringRef)@"test %d", 5);
//
// NSString *s = (NSString *)str;
//
// NSLog(@"s is %@", s);
//
// CFRelease(str);
//在ARC中,需要对COREFOUNDATION框架中开辟的内存管理需要注意以下几点
/*
oc对象(ARC自动管理内存)---> CF类型(ARC不做管理)
__bridge_retained 这个桥接过程, ARC需要丢弃掉内存管理的权限
*/
NSString *s1 = [NSString stringWithFormat:@"jack"];
// CFStringRef s2 = (__bridge_retained CFStringRef) s1;
CFStringRef s2 = CFBridgingRetain(s1);
//...
CFRelease(s2);
/*
CF类型(ARC不做管理) ---> oc对象(ARC自动管理内存)
__bridge_transfer 这个桥接过程, 将CF类型的内存管理权限授权给OC的对象
*/
CFStringRef str = CFStringCreateWithFormat(kCFAllocatorDefault, NULL, (CFStringRef)@"test %d", 5);
// NSString *str2 = (__bridge_transfer NSString *) str;
NSString *str2 = CFBridgingRelease(str);
NSLog(@"str2 is %@", str2);
//不需要释放,管理权限已经交给ARC
// CFRelease(str2);
/*
__bridge桥接, 不做弃权,也不能授权
*/
NSString *str3 = (__bridge NSString *)(str);
NSLog(@"str3 is %@", str3);
//COREFOUNDATION框架
//创建的是一个CoreFoundation框架中的类型
//CoreFoundation当中的类型可以跟Foundation框架中的类型互相转换
// CFStringRef str = CFStringCreateWithFormat(kCFAllocatorDefault, NULL, (CFStringRef)@"test %d", 5);
//
// NSString *s = (NSString *)str;
//
// NSLog(@"s is %@", s);
//
// CFRelease(str);
//在ARC中,需要对COREFOUNDATION框架中开辟的内存管理需要注意以下几点
/*
oc对象(ARC自动管理内存)---> CF类型(ARC不做管理)
__bridge_retained 这个桥接过程, ARC需要丢弃掉内存管理的权限
*/
NSString *s1 = [NSString stringWithFormat:@"jack"];
// CFStringRef s2 = (__bridge_retained CFStringRef) s1;
CFStringRef s2 = CFBridgingRetain(s1);
//...
CFRelease(s2);
/*
CF类型(ARC不做管理) ---> oc对象(ARC自动管理内存)
__bridge_transfer 这个桥接过程, 将CF类型的内存管理权限授权给OC的对象
*/
CFStringRef str = CFStringCreateWithFormat(kCFAllocatorDefault, NULL, (CFStringRef)@"test %d", 5);
// NSString *str2 = (__bridge_transfer NSString *) str;
NSString *str2 = CFBridgingRelease(str);
NSLog(@"str2 is %@", str2);
//不需要释放,管理权限已经交给ARC
// CFRelease(str2);
/*
__bridge桥接, 不做弃权,也不能授权
*/
NSString *str3 = (__bridge NSString *)(str);
NSLog(@"str3 is %@", str3);
相关文章推荐
- 如何修改linux的系统时间
- POJ 2282 && HDU 1663 The Counting Problem(数论)
- RelativeLayout相对布局
- J版OpenStack text框回车(enter)实现table Filter功能(替代筛选button功能)
- expect 的小点--expect的使用
- 001Spark文件分析测试
- 二叉树 知道度 求节点数
- runloop
- 图像采集系统的Camera Link标准接口设计
- 图像采集系统的Camera Link标准接口设计
- 11.2.0.4 Patch Set - Availability and Known Issues (Doc ID 1562139.1)
- POJ 1226 && HDU 1238 Substrings(kmp)
- POJ 3461 && HDU 1686 Oulipo(kmp)
- POJ 2406 Power Strings(kmp)
- POJ 2185 Milking Grid(二维kmp)
- web service与远程调用(RPC)的区别
- onbeforeunload与onunload事件
- POJ 1961 && HDU 1358 Period(kmp)
- GridView认识(一)
- 最近学习笔记