我採取了以下代碼,延遲後會調用CFRelease。我已經將它包含在上下文的方法中。什麼是CFRelease for Core Foundation對象的好替代方案?
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,這有點安全。任何建議表示讚賞。
爲什麼會有延遲? – zaph