2013-04-23 90 views
1

在Core Foundation中,當我用CFError指針調用某個函數時,我是否有責任在事後釋放該錯誤?例如:我需要釋放CFError嗎?

CFErrorRef error = NULL; 
BOOL success = ABRecordSetValue(record, property, value, &error); 
if (!success) { 
    // handle error 
    CFRelease(error); 
} 

我想我記得讀書的地方,這只是神奇作品,未經發布,但無法找到任何東西來驗證。

+0

[ABRecordSetValue返回的CFErrorRef的內存管理]的可能的重複(http://stackoverflow.com/questions/8627805/memory-management-of-a-cferrorref-in-core-foundation) – 2013-04-23 21:25:32

+0

請參閱[內存管理編程指南](https://developer.apple.com/library/ios/#documentation/CoreFoundation/Conceptual/CFMemoryMgmt/Concepts/Ownership.html#//apple_ref/doc/uid/20001148-CJBEJBHH)。該函數名稱中不包含「Create」或「Copy」,因此您不會成爲它返回的任何對象的所有者。 – 2013-04-23 21:30:22

回答

3

在的CoreFoundation,如果你回使用指針得到的東西,那很可能使用的...Create()功能之一(不文檔說什麼這件事?)已被分配的,所以你必須將它釋放。

在Foundation中,「返回」值是自動發佈的,因此您不需要(並且實際上不應該)這樣做。