我一直在尝试分析为什么 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”,所以我认为我已经清楚了。
希望有人能解答我的问题。谢谢!干杯,特隆德
最佳答案
请注意,根据 Objective C 命名规则,以单词 new
或 copy
开头的方法被假定返回调用者拥有的对象。如果对 [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/