demo下载地址 http://download.csdn.net/detail/xlsn0w/9429193
#import "Person.h"
#import <objc/objc-runtime.h>
#import "Cat.h"
@implementation Person
/**
* 在ViewController里面调用catchMouse而Person没有catchMouse
但发现Cat拥有catchMouse方法可以在外界调用Person 类的catchMouse方法转发消息给Cat
*/
{
Cat *cat;
}
- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector {
NSMethodSignature *methodSignature = [supermethodSignatureForSelector:aSelector];
if (methodSignature == nil) {
cat = [Catnew];
methodSignature = [cat methodSignatureForSelector:aSelector];
}
return methodSignature;
}
- (void)forwardInvocation:(NSInvocation *)anInvocation {
[anInvocation invokeWithTarget:cat];
}
在
ViewController.m里面实现人的方法具有猫的抓老鼠方法
#import "Person.h"
#import <objc/objc-runtime.h>
#import "Cat.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
Person *person = [Personnew];
[person performSelector:@selector(catchMouse)];
}