【问题标题】:add Objective C instance Variables in category在类别中添加 Objective C 实例变量
【发布时间】:2012-06-15 03:03:37
【问题描述】:

我知道在目标 c 中你不能在接口类别中添加实例变量。没关系,但今天我看到了一些我无法弄清楚的东西,(为什么这种行为是正确的?)

@interface XXXX:NSObject

@end

@interface XXXX(){

@private

    int x;
}

@end

为什么我可以在空()类别中添加添加实例变量,以及为什么互联网上没有人提及。

谢谢大家

【问题讨论】:

标签: objective-c


【解决方案1】:

您可以将实例变量添加到匿名类别/类扩展(仅使用() 作为类别名称),因为它们本质上只是主界面的私有扩展,并且只能有一个。

但是,您不能添加具有命名类别的新实例变量。不过,您可以使用Associative References 来解决这个问题。

【讨论】:

  • 实际上,您可以在 Apple 最新的 Objective-C 语言修订版中执行此操作。但如果您仍在使用 32 位 Mac ABI,则不能,因为它无法适应新的语言功能。
  • 适用于所有类别还是仅适用于匿名/类类别?
  • 此代码符合 Xcode 4.1 for ios 没有问题。我只是想知道为什么允许这样做。有任何资源我可以找到此信息。
  • 我更新了我的答案。您可以将实例变量添加到类类别。但没有命名。
  • 它不是一个类别,它是一个扩展。类扩展可以做到这一点;类别不能。
猜你喜欢
  • 1970-01-01
  • 2011-05-07
  • 2012-02-02
  • 2013-02-02
  • 2023-04-04
  • 2011-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多