【问题标题】:Does ARC mean I should declare static types rather than id?ARC 是否意味着我应该声明静态类型而不是 id?
【发布时间】:2011-07-05 15:36:21
【问题描述】:

ARC 文档在 LLVM 网站上公开可用,因此 NDA 在这里不是问题。

我发现在为 ARC 准备代码时,我在很多以前会使用 (id) 的情况下使用 (NSObject*)。

例如,如果我正在编写一个 initWithParent: 方法,它可能是

-(id) initWithParent: (NSObject*) parent;

我以前会写的地方

-(id) initWithParent: (id) parent;

我的问题是——这种做法有意义吗?

【问题讨论】:

  • 我不知道为什么 -(id) initWithParent: (id) parent; ARC失败。您遇到了什么问题?
  • 正如 Josh 所说,使用 id 似乎应该可行。此处是否涉及免费桥接、(void *)指针或结构?

标签: iphone objective-c ios automatic-ref-counting


【解决方案1】:

我相信这适用于大多数情况,至少如果您的对象派生自 NSObject(并非所有东西都如此)。 Here's an interesting blog post on the subject(独立于 ARC)。

【讨论】:

    【解决方案2】:

    我绝不是任何专家,但如果消息传递的不是对象(int、struct 等),它似乎可能会遇到麻烦。

    除此之外,这是一种有趣的解决问题的方式。

    【讨论】:

    • 如果您将不是对象的东西传递给期望 id 的方法,这本身似乎就是一个问题。
    • 是的,你是对的。我从来没有尝试将不是对象的东西传递给 id 所以我不知道编译器不会让你......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 2012-02-04
    • 1970-01-01
    • 2013-08-21
    相关资源
    最近更新 更多