首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用objc_msgSend时避免静态分析器泄漏警告?

使用objc_msgSend时避免静态分析器泄漏警告?
EN

Stack Overflow用户
提问于 2012-04-12 14:55:30
回答 1查看 305关注 0票数 0

我有来自泛型工厂类的以下(简化)代码:

代码语言:javascript
代码运行次数:0
运行
复制
- (id) invokeSetup: (id) object {
    // Just an example, subclasses delegate setup to a component that either returns +0 or +1 references
    return objc_msgSend(object, @selector(init));
}

- (id) newInstance {
    id object = objc_msgSend([NSString class], @selector(alloc));
    id replacement = [self invokeSetup: object];

    return replacement;
}

分析器在return replacement:上产生警告:

警告:具有+0保留计数的对象返回给调用方,其中需要+1 (拥有)保留计数

我需要告诉分析器- invokeSetup返回的引用是+1。

  1. I不能用ns_returns_retained注释invokeSetup,因为它是继承的,还有其他的子类,invokeSetup返回+0引用。如果是+1或+0,则只能在运行时检测到。
  2. i不能更改任何方法的名称。
  3. 是设计的方式。也许有更好的设计,但在这里是无法改变的。

是否有可能在赋值点(id replacement = ...)以某种方式告诉ARC,引用肯定是+1?

谢谢你,乔晨

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-12 15:19:36

有关在代码中抑制静态分析器警告的方法,请参见https://stackoverflow.com/a/5833430/1313031

但是的,最好的办法就是重命名newInstance

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10126167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档