CFSTR内存管理

Par*_*fna 6 memory-management objective-c core-foundation

我正在使用CFSTR函数从常量c字符串创建CFString,我在我的守护进程中经常调用此函数.

来自文档:
CFSTR返回的值具有以下语义:

  1. 从CFSTR返回的值不会被CFString释放 - 它们在程序终止之前保证有效.
  2. 您可以以平衡的方式保留和释放从CFSTR返回的值,就像任何其他CFString一样,但您不需要这样做.

我应该使用保留和释放吗?

And*_*sen 11

如文档所述,CFSTR()在程序终止之前,创建的字符串仍然有效.您可以整天释放它们,但它们实际上不会被释放.因此,无需明确保留/释放它们.保留/释放它们是有效的,否则,您无法通过其他保留/释放它们的代码(框架方法等)传递它们.像使用NSString文字一样对待它们@"",也就是说,创建后不需要保留或释放它们,但是如果你编写的代码可以使用任何CFString,你需要遵循正常的内存管理规则,包括使用CFRetain()CFRelease().