Too many arguments to function call, expected 0, have 2

#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,等等自己去深挖吧😄