gpt4 book ai didi

objective-c - cocoa 代码中的内存泄漏

转载 作者:行者123 更新时间:2023-12-03 17:28:51 26 4
gpt4 key购买 nike

我一直在尝试分析为什么 Xcode 分析器 (v4.2) 提示我的 Objective-C 代码泄漏内存。我正在创建一个 NSOperation,它 1) 递归地创建一个目录(如果不存在),2) 将文件从一个目录复制到另一个目录中。

NSOperation 初始化为:

- (id)initWithFullPathSource:(NSString *) mysource andFullPathCopy:(NSString *) mycopy     andNewDirectory:(NSString *) mydir withMode:(NSString *) mymode withLR:(NSString *) LR
{

self = [super init];
if (self) {

[self setFullPathSource:mysource];
[self setFullPathCopy:mycopy];
[self setNewDirectory:mydir];
[self setMode:mymode];
[self setMyLR:LR];
}

return self;
}

附件是 Xcode 分析器如何查看我的代码的屏幕截图。谁能帮我理解为什么我在这种情况下会泄漏内存?我在主例程结束时释放了“createComponents”和“removeComponents”,所以我认为我已经清楚了。

希望有人能解答我的问题。谢谢!干杯,特隆德

enter image description here

最佳答案

请注意,根据 Objective C 命名规则,以单词 newcopy 开头的方法被假定返回调用者拥有的对象。如果对 [self newDirectory] 的调用返回一个自动释放的对象,请尝试重命名它,使其不以 new 开头。

这里有一个很好的答案解释更多:Semantic Issue: Property's synthesized getter follows Cocoa naming convention for returning 'owned' objects

建议更改属性上 getter 的名称,如下所示:

@property (strong, nonatomic, getter=theNewDirectory) NSString *newDirectory;

或者将其命名为:directoryToBeCreated

关于objective-c - cocoa 代码中的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12169097/

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