前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Core函数之ARC处理方案

Core函数之ARC处理方案

原创
作者头像
SheltonWan
修改2019-06-14 11:01:16
7360
修改2019-06-14 11:01:16
举报

虽然ARC会帮助我们自动管理对象的引用计数,使得我们可以不用编写retain和release这样的代码,但是这个特性只对OC对象有用,而用CoreFoundation和CoreGraphic这些C函数创建的对象必须还是由我们自己来销毁,因此即使在ARC模式下也需要调用CFRelease或相对应的销毁函数来释放相对应的内存。不过有一个简单的方案,也可以使得我们不需要调用CFRelese函数,参考如下代码:

CGMutablePathRef cgPath = CGPathCreateMutable();

……

CGPathRef path = (__bridge CGPathRef)(CFBridgingRelease(cgPath));

通过上面两次的转换,我们就不需要手动调用CFRelease来释放内存了。

在这里就不得不提到CFBridgingRelease函数,它将非OC指针转换成OC对象,同时把对象生命周期交给ARC来管理,因此我们就不用手动释放内存了。

而__bridge 关键字是负责非OC指针与OC对象相互转换,但不会将对象生命周期交接过去。

因此,在我们调用到CFCreateXXX函数,或者CGCreateXXX函数的时候要注意相应处理对应的内存释放了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档