runtime什么时候用

不得不用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,不让你去严格检查

你可能感兴趣的:(runtime什么时候用)