NSFileManager有一個方法來複制。我應該釋放NSFileManager的copyItemAtPath的NSError對象:toPath:error:?
- (BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error
如果發生錯誤,在返回所述第三參數(NSError **)將包含描述該問題的NSError對象。
問題:我需要釋放嗎?
還有一些其他的方法,比如這一個需要(的NSString **),
NSPropertyListSerialization +(NSData *)dataFromPropertyList:(id)plist format:(NSPropertyListFormat)format errorDescription:(NSString **)errorString
?他們遵循相同的內存管理規則?要釋放或不釋放,這就是問題所在。
---回答
正如安德斯所說,答案是「不」釋放。
我弄糊塗了,因爲該類NSPropertyListSerialization有一個方法
文檔說我應該如果不是零釋放的第三個參數。然而,它棄用,取而代之的是
+ (NSData *)dataWithPropertyList:(id)plist format:(NSPropertyListFormat)format options:(NSPropertyListWriteOptions)opt error:(NSError **)error
和參數是(NSError **)現在。不需要像其他類似的方法發佈。所以一般的記憶管理規則不需要發佈這種論點。
---參考文檔
在蘋果的Advanced Memory Management Programming Guide,節你做的引用返回屬於自己的對象:
當你調用任何這些方法,你沒有創建NSError對象,所以你不擁有它。