Objective-C:类别中的实例变量

时间:2011-05-28 15:31:13

标签: objective-c object asihttprequest nsindexpath identify

我只想问是否可以通过类别添加实例变量。我的特殊问题是,我需要向ASIHTTPRequest对象添加一个NSIndexPath属性,但我不想原则上将ASIHTTPRequest子类化。

我有其他选择吗?

感谢您的回答, 基督教

1 个答案:

答案 0 :(得分:19)

类别无法声明其他实例变量,但自OS X 10.6和iOS 3.1起,您可以使用associative references解决此问题。

您可以使用关联引用来模拟向现有类添加对象实例变量。使用关联引用,可以在不修改类声明的情况下向对象添加存储。这是通过objc_setAssociatedObjectobjc_getAssociatedObject完成的。如果您将这些调用包装在属性的自定义getter和setter中,则可以伪造一个ivar。

通过post查看Ole Begemann