Objective-C categories are a beautiful thing. They allow you to quickly extend a class’s functionality without creating a subclass. One major shortcoming of categories, however, is their inability to hold extra properties/variables. Kind of lame huh? Well it doesn’t have to be! By leveraging the Objective-C runtime library, we can add extra properties to our categories via magical things called associated objects.