不得不用runtime消息机制的情况:
调用私有方法
1.别人的类中写了一个很好用的方法,但是没有在h文件中暴露出来,而你又不能随便去改别人的代码,按一般的方式是不能调用的,这种情况用runtime去调用
格式如:
Person *p = objc_msgSend(objc_getClass("Peson"),sel_registerName("alloc"));
p = objc_msgSend(p,sel_registerName("init"));
调用私有的eat方法
无参数
objc_msgSend(p,@selector(eat));
有参数
objc_msgSend(p,@selector(run:),20 );
20就是参数的位置
2.调用系统的私有方法
平常这样写纯属zhuangbi,是没有意义的
注意:runtime调用方法都是有前缀的,谁的事情谁开头,对象的事情对象开头,如objc,方法则是sel开头
在xcode中直接用runtime调用方法是没有提示的,苹果是不推荐我们使用runtime的,需要在设置中开启
查找build setting ,搜索msg,在严格检查消息机制改为NO,不让你去严格检查