我只是问是否可以通过类别添加实例变量。我的特殊问题是,我需要添加一个NSIndexPath属性到ASIHTTPRequest对象,但我不想将ASIHTTPRequest子类作为原则问题。Objective-C:类别中的实例变量
我有其他方法吗?
谢谢您的回答, 基督教
我只是问是否可以通过类别添加实例变量。我的特殊问题是,我需要添加一个NSIndexPath属性到ASIHTTPRequest对象,但我不想将ASIHTTPRequest子类作为原则问题。Objective-C:类别中的实例变量
我有其他方法吗?
谢谢您的回答, 基督教
一个类别不能宣布额外的实例变量,但由于OS X 10.6和iOS 3.1可以解决这个与associative references。
您可以使用关联引用来模拟将对象实例变量添加到现有类。使用关联引用,您可以将存储添加到对象而无需修改类声明。这通过objc_setAssociatedObject
和objc_getAssociatedObject
完成。如果你将这些调用包装在一个属性的自定义getter和setter中,你可以伪造一个ivar。
看一看post来自Ole Begemann。
谢谢,但只是发现一个更简单的解决方案:userInfo- ASIHTTPRequest中的字典!但无论如何,谢谢! – cschwarz 2011-05-28 15:38:18
我很高兴你解决了它!您可能希望用您的解决方案自己回答问题,并接受它或接受其他答案之一,以便问题不会被拒绝。 – albertamg 2011-05-28 18:15:24
事实上,现在可以在类扩展中添加ivars。请参阅:http://stackoverflow.com/questions/5826345/how-to-declare-instance-variables-and-methods-not-visible-or-usable-outside-of-th/5826453#5826453 – 2011-05-28 18:24:32
可能重复的[Objective-C:属性在类别](http://stackoverflow.com/questions/8733104/objective-c-property-in-category) – hfossli 2014-01-16 08:24:37