【发布时间】:2011-10-12 01:35:32
【问题描述】:
我已采用以下代码,该代码将在延迟后调用 CFRelease。我已将它包含在上下文方法中。
CGPathRef NewPathWithRoundRect(CGRect rect, CGFloat cornerRadius)
{
// other work to create ref which is a CGPath
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.5 * NSEC_PER_SEC), dispatch_get_current_queue(), ^{
CFRelease(ref);
});
}
在最新版本的 Xcode 中,我收到有关未正确释放内存的警告。调用者获取该值,使用它,然后调用 CFRelease。我现在 CFRetain 和 CFRelease 它,所以为了将引用计数降为零,我将这个调度设置为运行并清理引用。
我不喜欢这种方法。是否有更好的模式来返回在方法中创建并需要返回的 CF 对象?我是否应该在方法之外创建路径并将其作为参数传入,以便由调用者创建和释放?
我还更改了代码以调用 CGPathRelease,这更安全一些。任何建议表示赞赏。
【问题讨论】:
标签: objective-c