我只是问是否可以通过类别添加实例变量。我的特殊问题是,我需要将 NSIndexPath 属性添加到 ASIHTTPRequest 对象,但原则上我不想将 ASIHTTPRequest 子类化。
我有其他选择吗?
谢谢你的回答,克里斯蒂安
我只是问是否可以通过类别添加实例变量。我的特殊问题是,我需要将 NSIndexPath 属性添加到 ASIHTTPRequest 对象,但原则上我不想将 ASIHTTPRequest 子类化。
我有其他选择吗?
谢谢你的回答,克里斯蒂安
类别不能声明额外的实例变量,但从 OS X 10.6 和 iOS 3.1 开始,您可以使用关联引用来解决这个问题。
您可以使用关联引用来模拟将对象实例变量添加到现有类。使用关联引用,您可以在不修改类声明的情况下向对象添加存储。这是通过objc_setAssociatedObject
和完成的objc_getAssociatedObject
。如果将这些调用包装在属性的自定义 getter 和 setter 中,则可以伪造 ivar。
看看Ole Begemann的这篇文章。