gpt4 book ai didi

objective-c - 我该如何修复这个 clang 警告 : "Object with +0 retain counts returned to caller where +1 (owning) retain count is expected"?

转载 作者:太空狗 更新时间:2023-10-30 03:24:59 26 4
gpt4 key购买 nike

我有一段 Objective-C 代码,如下所示:

- (NSString *)copyData:(NSData *)data
{
NSString *path = [[[self outputDirectory] stringByAppendingPathComponent:@"archive"] stringByAppendingPathExtension:@"zip"];
NSLog(@"Copying data to %@", path);
[data writeToFile:path atomically:NO];
return path;
}

代码是从如下所示的初始化程序中调用的:

- (id)initWithData:(NSData *)data
{
if ((self = [super init]) != nil) {
NSString *path = [self copyData:data]; // Line 41 (referenced in warning, shown below)
return [self initWithContentsOfFile:path];
}
return self;
}

运行 clang 静态分析器时,我收到以下针对 path 变量的警告:

Potential leak of an object allocated on line 41 and stored into 'path'

Object with +0 retain counts returned to caller where +1 (owning) retain count is expected

我很困惑。我的理解是 stringByAppendingPathComponent 应该返回一个自动释放的字符串,所以它应该的净保留计数为 0。(显然我不想保留它。)

我已经尝试更改 copyData: 以返回以下内容,但它并没有消除警告:

return [[path retain] autorelease];

那么这个警告有什么用呢?

最佳答案

我怀疑它只是注意到一个带有前缀 copy 的方法并将其标记为应该返回调用者拥有的东西的东西,因为它认为它遵循 Cocoa 命名约定。

在你的情况下,当然,你指的是文件和诸如此类的东西,所以这是一个可以忽略的警告。如果您将方法的名称更改为类似 saveData: 的名称,我敢打赌警告会消失。

关于objective-c - 我该如何修复这个 clang 警告 : "Object with +0 retain counts returned to caller where +1 (owning) retain count is expected"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2837904/

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