Basic Associated Object Example
suggest changeAssume we need to add an NSString object to SomeClass
(we cant subclass).
In this example we not only create an associated object but also wrap it in a computed property in a category for extra neatness
#import <objc/runtime.h>
@interface SomeClass (MyCategory)
// This is the property wrapping the associated object. below we implement the setter and getter which actually utilize the object association
@property (nonatomic, retain) NSString *associated;
@end
@implementation SomeClass (MyCategory)
- (void)setAssociated:(NSString *)object {
objc_setAssociatedObject(self, @selector(associated), object, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
- (NSString *)associated {
return objc_getAssociatedObject(self, @selector(associated));
}
Now it would be as easy as this to use the property
SomeClass *instance = [SomeClass alloc] init];
instance.associated = @"this property is an associated object under the hood";
Found a mistake? Have a question or improvement idea?
Let me know.
Table Of Contents