【问题标题】:I dont know CFRelease(CFTypeRef cf) usage when i using the Core Text当我使用核心文本时,我不知道 CFRelease(CFTypeRef cf) 的用法
【发布时间】:2013-06-20 16:22:56
【问题描述】:

使用核心文本,我不知道什么时候应该调用释放函数:

无效 CFR 释放 ( CFTypeRef cf );

我应该调用上面的函数并传递以下参数:

CGContextRef contextRef;

CGMutablePathRef leftColumnPath;

【问题讨论】:

    标签: iphone ios objective-c


    【解决方案1】:

    除非创建/复制它们,否则不应调用 CFRelease。

    Core Foundation 函数的名称表明您何时拥有返回的对象: 在名称中嵌入“创建”的对象创建函数; 名称中嵌入了“复制”的对象复制函数。 如果您拥有一个对象,则您有责任在完成该对象后放弃所有权(使用 CFRelease)。

    因此,如果您使用某些包含“复制”或“创建”的 CF 方法,您应该对它们调用 CFRelease。否则你可以直接使用它们。

    【讨论】:

    • 你的意思是跟随:CGMutablePathRef leftColumnPath = CGPathCreateMutable();当我调用这个 Creat 函数时,我应该调用 CFRelease?
    • 这是一个非常简单的测试。该方法中是否包含“复制”或“创建”一词?如果是,您必须释放它。如果不是,您必须释放它。
    • 我明白了,当我调用 CF 方法包含“复制”或“创建”时,“CG”方法没有!谢谢!
    • @jeffrey 您必须根据您的情况调用发布方法。您通过调用“创建”方法CGPathCreateMutable 创建了一个路径,因此当您使用完它时,您应该在其上调用CGPathRelease。 PS。实际上,CGXXXRelease 和 CFRelease 是一样的。唯一的区别是“指定的释放方法”(如 CGPathRelease)可以应用 NULL 作为输入,而 CFRelease 不能。在您的情况下,您可以调用 CFRelease 或 CGPathRelease 以避免泄漏。
    猜你喜欢
    • 2019-02-09
    • 2011-03-03
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    相关资源
    最近更新 更多