gpt4 book ai didi

cocoa - 我应该释放 NSFileManager 的 copyItemAtPath :toPath:error:? 的 NSError 对象吗

转载 作者:行者123 更新时间:2023-12-03 16:17:43 27 4
gpt4 key购买 nike

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

它们遵循相同的内存管理规则吗?放还是不放,这是个问题。

---答案

正如 Anders 所说,答案是“不”发布。

我很困惑,因为 NSPropertyListSerialization 类有一个方法

+ (NSData *)dataFromPropertyList:(id)plist format:(NSPropertyListFormat)format errorDescription:(NSString **)errorString

文档说如果第三个参数不为零,我应该释放它。但是它已被弃用并被

取代
+ (NSData *)dataWithPropertyList:(id)plist format:(NSPropertyListFormat)format options:(NSPropertyListWriteOptions)opt error:(NSError **)error

现在参数是(NSError **)。无需像其他类似方法那样释放。所以一般的内存管理规则是不需要释放此类参数。

---引用文档

在苹果的 Advanced Memory Management Programming Guide ,“您不拥有通过引用返回的对象”部分:

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

最佳答案

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

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

编辑:今天似乎无法拼写

关于cocoa - 我应该释放 NSFileManager 的 copyItemAtPath :toPath:error:? 的 NSError 对象吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3581211/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com