Foundation与coreFoundation的相互转换

时间:2024-10-29 09:05:14
今天在整理以前的一些琐碎知识,今天就分享一个Foundation与coreFoundation的相互转换细节问题,其中的引用计数器是需要考虑的方面。
ARC 环境下,CoreFoundation框架中的对象依然要使用手动引用计数管理,手动内存管理的原则为:凡是使用的函数中出现了了copy,retain,create 获取的对象,都必须有调用一次CFRelease函数来释放对象。
CoreFoundation—>Fundation
  1. __bridge 可于 Fundation <-> CoreFoundation的相互转换 只负责转换类型,但并不转移对象的所有权(也就是不影响引用计数器).
  2. __bridge_transfer 只能把CoreFoudation对象转换为Foundation的对象,同时转移对象的所有权
  3. CFBridgingRelease 与 __bridge_transfer 等价,源代

Foundation与coreFoundation的相互转换

Foundation—>CoreFoundation
  1. __bridge_retained 只能把Foundation的对象转换为CoreFoundation中的对象,同时让CoreFoundation中对象负责管理对象生命周期
  2. CFBridgingRetain 与 __bridge_retained 等价,源代码

Foundation与coreFoundation的相互转换