【问题标题】:CFSTR memory managementCFSTR 内存管理
【发布时间】:2012-02-13 16:12:27
【问题描述】:

我正在使用CFSTR 函数从常量 c 字符串创建 CFString,并且我在我的守护程序中非常频繁地调用此函数。

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

  1. 从 CFSTR 返回的值不会被 CFString 释放——它们是 保证有效直到程序终止
  2. 您可以保留 并以平衡的方式释放从 CFSTR 返回的值,例如 任何其他 CFString,但您不需要这样做。

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

【问题讨论】:

    标签: objective-c memory-management core-foundation


    【解决方案1】:

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

    【讨论】:

    • 我在我的守护进程中使用它并且非常频繁地调用这个函数,所以我应该使用其他函数吗?
    • 您是否关心性能或内存使用情况?无论如何,您不应该过早地进行优化。如果您遇到性能或内存使用问题,是时候分析代码并找出改进方法了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多