ios之运行时机制

来源:互联网 发布:淘宝如何设置搭配套餐 编辑:程序博客网 时间:2024/04/28 11:24

参考文档:


例:

<span style="font-size:14px;">#import <Foundation/Foundation.h>#import <objc/runtime.h>  /** *objc_getClass通过一个字符串类名返回类的实例对象 *sel_registerName通过字符串方法名返回一个方法的实例对象SEL *objc_msgSend(id,SEL) 表示向某个对象发送消息,即调用某个方法 * */ int main(int argc, const char * argv[]) {    @autoreleasepool {        //获取Person的类实例        id p = objc_getClass("Person");                //获取带有参数的print:方法的实例        SEL print = sel_registerName("print:");                //发送消息        objc_msgSend(p, print,@"123e1232312");    }    return 0;} //调用不带参数的方法void msgWithoutArgs(){    //获取Person类的实例    id per = objc_getClass("Person");        SEL aloc = sel_registerName("alloc");//alloc方法        //分配空间    id p = objc_msgSend(per, aloc);// 相当于 id p = [Person alloc]        //初始化    SEL it = sel_registerName("init");//创建init方法的实例    //        Person *person = (Person *)objc_msgSend(p, it);//相当于 id person = [[Person alloc] init];    id person = objc_msgSend(p, it);    //        [person print];        //根据方法名获取方法实例SEL,SEL sel_registerName ( const char *str );    SEL method = sel_registerName("print");    //    //        //通过消息发送,    objc_msgSend(person,method);}</span>

上面只是简单的一个案例,后续还会增加更多的运行时机制方面的知识


0 0
原创粉丝点击