Skip to content

Instantly share code, notes, and snippets.

@zmcartor
Created April 17, 2018 15:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zmcartor/0fd139c296cb37e3d66fa70c3572b79b to your computer and use it in GitHub Desktop.
Save zmcartor/0fd139c296cb37e3d66fa70c3572b79b to your computer and use it in GitHub Desktop.
Dynamic Class Method ObjC
+ (BOOL)resolveClassMethod:(SEL)name {
NSString *classname = NSStringFromClass([self class]);
NSString *selectorString = [NSString stringWithFormat:@"crazyClass%@",classname];
NSLog(@"string is %@", selectorString);
SEL ourSelector = NSSelectorFromString(selectorString);
if (name == ourSelector) {
// adding class method to meta-class
Class ourClass = object_getClass(NSClassFromString(classname));
class_addMethod(ourClass, ourSelector, (IMP)crazyClassMethod, "@v:@");
return YES;
}
return [super resolveClassMethod:name];
}
void crazyClassMethod(id self, SEL _cmd) {
NSLog(@"crazyClassMethod has been added!");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment