我只想问是否可以通过类别添加实例变量。我的特殊问题是,我需要向ASIHTTPRequest对象添加一个NSIndexPath属性,但我不想原则上将ASIHTTPRequest子类化。
我有其他选择吗?
感谢您的回答, 基督教
答案 0 :(得分:19)
类别无法声明其他实例变量,但自OS X 10.6和iOS 3.1起,您可以使用associative references解决此问题。
您可以使用关联引用来模拟向现有类添加对象实例变量。使用关联引用,可以在不修改类声明的情况下向对象添加存储。这是通过objc_setAssociatedObject
和objc_getAssociatedObject
完成的。如果您将这些调用包装在属性的自定义getter和setter中,则可以伪造一个ivar。
通过post查看Ole Begemann。