Cocoa 是否应释放NSFileManager的NSError对象';s copyItemAtPath:toPath:错误:?

Cocoa 是否应释放NSFileManager的NSError对象';s copyItemAtPath:toPath:错误:?,cocoa,cocoa-touch,memory-management,Cocoa,Cocoa Touch,Memory Management,NSFileManager有一个进行复制的方法 - (BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error 如果发生错误,返回时的第三个参数(NSError**)将包含一个描述问题的NSError对象 问题:我需要发布它吗? 还有一些其他方法,例如此方法采用(NSString**) NSPropertyListSerialization +(NSData *)data

NSFileManager有一个进行复制的方法

- (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 *)dataFromPropertyList:(id)plist format:(NSPropertyListFormat)format errorDescription:(NSString **)errorString
文件说,如果不是零,我应该释放第三个参数。然而,它已被弃用,取而代之的是

+ (NSData *)dataWithPropertyList:(id)plist format:(NSPropertyListFormat)format options:(NSPropertyListWriteOptions)opt error:(NSError **)error
现在的参数是(n错误**)。无需像其他类似方法一样发布。因此,一般的内存管理规则是不需要释放此类参数

---参考文件

在Apple的部分中,您不拥有通过引用返回的对象:


当您调用这些方法中的任何一个时,您不会创建NSError对象,因此您不会拥有它

返回的NSError对象是自动释放的对象,因此不应释放它

参数只告诉函数将返回的错误对象(如果有)放在何处

编辑:今天似乎无法拼写

[NSPropertyListSerialization propertyListFromData:(NSData *) mutabilityOption:(NSPropertyListMutabilityOptions) format:(NSPropertyListFormat *) errorDescription:(NSString **)]
如果你在做这样的事情

(NSString **)
然后,您应该检查清楚说明是否需要发布的文档。如果文档中没有任何关于释放返回对象的内容,比如

- (BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error
然后不要担心它们,它们将在适当的时候发布,或者已经被框架自动释放