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

csc*_*arz 15 object objective-c identify asihttprequest nsindexpath

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

我有什么选择吗?

谢谢你的回答,克里斯蒂安

alb*_*amg 19

类别不能声明其他实例变量,但是从OS X 10.6和iOS 3.1开始,您可以使用关联引用解决此问题.

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

看看这个职位奥莱Begemann.