- void dynamicMethod(id self, SEL _cmd, float w) {
- printf("dynamicMethod-%s\n", [NSStringFromSelector(_cmd) cStringUsingEncoding: NSUTF8StringEncoding]);
- printf("%f\n", w);
- }@implementation Person@synthesize name;@synthesize weight;@dynamic height; - (Person * ) initWithWeight: (int) w {
- self = [super init];
- if (self) {
- weight = w;
- }
- return self;
- } - (void) print: (NSString * ) str {
- NSLog(@"%@%@", str, name);
- } + (BOOL) resolveInstanceMethod: (SEL) sel {
- NSString * methodName = NSStringFromSelector(sel);
- BOOL result = NO;
- //看看是不是我们要动态实现的方法名称
- if ([methodName isEqualToString: @"setHeight:"]) {
- class_addMethod([self class], sel, (IMP) dynamicMethod, "v@:f");
- result = YES;
- }
- return result;
- } - (void) dealloc { [self setName: nil]; [super dealloc];
- }@end
来源: http://lib.csdn.net/snippet/objective-c/48763