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对象,所以你不拥有它。