15

I am just asking whether it was possible to add an instance variable via a category. My special problem is, that I need to add an NSIndexPath property to an ASIHTTPRequest object but I don't wanna subclass the ASIHTTPRequest as a matter of principle.

Do I have any kind of alternative?

Thanks for your answers, Christian

1

1 Answer 1

19

A category can not declare additional instance variables but since OS X 10.6 and iOS 3.1 you can work around this with associative references.

You can use associative references to simulate the addition of object instance variables to an existing class. Using associative references, you can add storage to an object without modifying the class declaration. This is done via objc_setAssociatedObject and objc_getAssociatedObject. If you wrap these calls in a property’s custom getter and setter, you can fake an ivar.

Have a look at this post by Ole Begemann.

Sign up to request clarification or add additional context in comments.

5 Comments

Thanks, but just found an easier solution: userInfo-Dictionary in ASIHTTPRequest! But anyway, thanks!
I'm happy you solved it! You may want to answer the question yourself with your solution and accept it or accept one of the other answers so the question does not remain unaccepted.
It is in fact now possible to add ivars in a class extension. See: stackoverflow.com/questions/5826345/…
That would require to synthesize/implement accessors of the property in the main @implementation block for the corresponding class
anyone have a correct url for the associative references link?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.