0

我一直试图分析为什么 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”,所以我认为我很清楚。

希望有人可以阐明我的问题。谢谢!干杯,特隆德

在此处输入图像描述

4

1 回答 1

7

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

这里有一个很好的答案解释更多:语义问题:属性的合成吸气剂遵循 Cocoa 命名约定以返回“拥有”对象

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

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

或称其为:directoryToBeCreated

于 2012-08-28T23:55:15.193 回答