可可代码中的内存泄漏

时间:2012-08-28 23:49:06

标签: objective-c xcode cocoa

我试图分析为什么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

1 个答案:

答案 0 :(得分:7)

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

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

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

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

或者称之为:directoryToBeCreated