#import <objc/message.h> 或 #import <objc/runtime.h>
出现了:
Too many arguments to function call, expected 0, have 2
解决办法: tagres -> Build sSettings -> 搜索msg -> Enable... (YES 改为 NO) 在运行就好了
正常调用:
[self test];
[SortViewController hh];
发送消息:
objc_msgSend(self,@selector(test));
objc_msgSend(self,sel_registerName("test"));
objc_msgSend(objc_getClass("SortViewController"),sel_registerName("hh"));
+(void)hh{
NSLog(@"-----TEST222----" );
}
-(void)test{
NSLog(@"-----TEST----" );
}
instance对象、class对象、meta-class对象在内存中都存储了一个isa指针。
1 什么是isa?
2 如何发送消息?
3 给instance对象发送消息,instance对象又是如何找到存储在class对象中的实例方法呢?
4 给class对象发送一个消息,class对象又是如何找到存储在meta-class对象中的类方法呢?
5 如何进行方法交换?
6 Imp是什么?
7 如何进行字典转模型?
8 runtime 通过方法交换做数组字典的防护,防越界和插入空值?
偷张神图镇楼:
关于isa ,runtime,等等自己去深挖吧😄