您现在的位置是:主页 > news > 网站seo推广/网络营销相关的岗位有哪些
网站seo推广/网络营销相关的岗位有哪些
admin2025/4/24 9:17:19【news】
简介网站seo推广,网络营销相关的岗位有哪些,昆山市建设局招投标网站,石家庄电商网站建设在Core Foundation框架和Foundation框架中有大量的可互换使用的数据类型。这意味着你可以使用相同的数据类型,作为Core Foundation框架方法调用或Objective-C消息的参数或接收者。这种在Core Foundation框架和Foundation框架之间交换使用数据类型的技术就…
在Core Foundation框架和Foundation框架中有大量的可互换使用的数据类型。这意味着你可以使用相同的数据类型,作为Core Foundation框架方法调用或Objective-C消息的参数或接收者。这种在Core Foundation框架和Foundation框架之间交换使用数据类型的技术就叫 Toll-Free Bridging。
由于ARC环境下编译器不会自动管理CF对象的内存,所以当我们创建了一个CF对象以后就需要我们使用CFRelease将其手动释放,那么CF和OC相互转化的时候该如何管理内存呢?答案就是我们在需要时可以使用__bridge,__bridge_transfer,__bridge_retained,具体介绍和用法如下
(1)__bridge只做类型转换,但是不修改对象(内存)管理权;
NSURL *url = [[NSURL alloc] initWithString:@"http://www.baidu.com"];
CFURLRef ref = (CFURLRef)url;
上面的这段代码在ARC环境下系统会给出错误提示和错误修正,修正后如下:
NSURL *url = [[NSURL alloc] initWithString:@"http://www.baidu.com"];
CFURLRef ref = (__bridge CFURLRef)url;
系统为我们自动添加了__bridge,因为是OC创建的对象并且在转换时没有涉及对象所有权的转换,所以上面的代码不需要加CFRelease
(2)__bridge_retained(也可以使用CFBridgingRetain)将Objective-C的对象转换为Core Foundation的对象,同时将对象(内存)的管理权交给我们,后续需要使用CFRelease或者相关方法来释放对象;
NSURL *url = [[NSURL alloc] initWithString:@"http://www.baidu.com"];
CFURLRef ref = (__bridge_retained CFURLRef)url;
CFRelease(ref);
当使用_bridge_retained标识符以后,代表OC要将对象所有权交给CF对象自己来管理,所以我们要在ref使用完成以后用CFRelease将其手动释放.
(3)__bridge_transfer(也可以使用CFBridgingRelease)将Core Foundation的对象转换为Objective-C的对象,同时将对象(内存)的管理权交给ARC。
CFStringRef cfString= CFURLCreateStringByAddingPercentEscapes(NULL,(__bridge CFStringRef)text,NULL,CFSTR("!*’();:@&=+$,/?%#[]"), CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));
NSString *ocString = (__bridge_transfer CFStringRef)cfString;
但并不是多有的CF对象都支持 Toll-Free Bridging!以下是支持该技术的类型表。
Core Foundation type | Foundation class | Availability |
---|---|---|
| | OS X |
| | OS X |
| | OS X |
| | OS X |
| | OS X |
| | OS X |
| | OS X |
| | OS X |
| | OS X |
| | OS X |
| | OS X |
| | OS X |
| | OS X |
| | OS X |
| | OS X |
| | OS X |
| | OS X |
| | OS X |
| | OS X |
| | OS X |
| | OS X |
| | OS X |
| | OS X |
| | OS X |
参考
(1)ARC下OC对象和CF对象之间的桥接(bridge)http://www.cnblogs.com/zzltjnh/p/3885012.html
(2)CFBridgingRetain与CFBridgingRelease的详细说明
http://blog.sina.com.cn/s/blog_7ea0400d0102v7cj.html
(3)__bridge,__bridge_retained和__bridge_transfer的意思,区别与使用
http://www.1mima.com/tag/cfbridgingrelease/
(4)苹果官方文档
https://developer.apple.com/library/ios/#releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html