学习小结8-----CoreFoundation当中的类型跟Foundation框架中的类型互相转换

本文详细介绍了在CoreFoundation框架与Foundation框架中类型转换的方法,包括使用CFStringRef和NSString之间的转换,并讨论了ARC下对COREFOUNDATION框架内存管理的注意事项。重点展示了如何在Objective-C中利用__bridge_retained、__bridge_transfer进行桥接转换,同时提供了实例代码演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);

        


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值