繁体   English   中英

Xcode static 分析器和 copyWithZone

[英]Xcode static analyzer and copyWithZone

Xcode 4 static 分析器将此方法标记为具有过度释放的返回值,而情况似乎并非如此。

- (id)copyWithZone:(NSZone *)zone
{
    return [[[self class] allocWithZone:zone] initWithURL:self.url postString:self.postString];
}

有一个箭头从 return 关键字指向它后面的表达式,另一个从该表达式指向分析器警告。 下面是static分析:

  1. 方法返回具有 +1 保留计数的 Objective-C object
  2. Object 发送-自动释放消息
  3. Object 作为拥有引用返回给调用者(单个保留计数转移给调用者)
  4. Object 以 +0(非拥有)保留计数返回给调用者
  5. Object 将 +0 保留计数返回给调用者,其中预期 +1(拥有)保留计数

static 分析仪是否不正确或此代码有问题?


根据请求, -initWithURL:postString:方法:

- (id)initWithURL:(NSURL *)u postString:(NSString *)p
{
    if ( (self = [super init]) ) 
    {
        self.url = u;
        self.postString = p;
    }
    return self;
}

即使在清理和重建项目之后,我也会继续收到此警告。

更新:升级到 Xcode 4.2 后,Xcode static 分析器不再将此标记为问题。

这是 Xcode 中的一个错误。 代码没问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM