First introduced in iOS 3.1 as part of the Objective-C runtime, associated objects provide a way to add instance variables to an existing class object (w\o subclassing.
This means you'll be able to attach any object to any other object without subclassing.
void objc_setAssociatedObject(id object, void *key, id value, objc_AssociationPolicy policy)
id objc_getAssociatedObject(id object, void *key)
void objc_removeAssociatedObjects(id object)
|object||The existing object you want to modify|
|key||This can basically be any pointer that has a constant memory address, but a nice practice is to use here a computed property (getter)|
|value||The object you want to add|
|policy||The memory policy for this new |