CFHipsterRef Low-Level Programming on iOS & Mac OS X

Dynamically Adding a Method

Class c = [NSObject class];

IMP greetingIMP = imp_implementationWithBlock((NSString *)^(id self, NSString *name){
    return [NSString stringWithFormat:@"Hello, %@!", name];
});

const char *greetingTypes = [[NSString stringWithFormat:@"%s%s%s", @encode(id), @encode(id), @encode(SEL)] UTF8String];

class_addMethod(c, @selector(greetingWithName:), greetingIMP, greetingTypes);