码迷,mamicode.com
首页 > 移动开发 > 详细

iOS之runtime

时间:2016-05-06 00:47:44      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

runtime
    简介:
        1.通过 Objective-C
            直接编写 Objective-C 代码 在程序运行期间会自动将代码转换成相应的结构体和函数。
        2.通过NSObject的方法 NSObject方法定义了许多方法用来直接调用Runtime里面的方法
            isKindOfClass:;isMemberOfClass:
            respondsToSelector:
            conformsToProtocol:
            methodForSelector:
        3.直接操作runtime方法
            runtime系统是一个C语言静态库,它拥有许多函数和结构体数据 需要导入<objc/runtime.h>
    Class:Class结构体主要存储类的实例变量和实例方法
        OC编译之后 类是由Class表示 实际指向objc_class结构体
        isa:指向metaClass(元类) 存储类的类方法和类变量
        super_class:指向父类
        methodLists:该类的方法列表
        ivars:存储类的成员变量的信息
    Method:是runtime内部定义的函数,用来代表一个方法
        介绍:
            SEL method_name:方法选择器的名字 用来区分方法的ID
                获取SEL的方法
                    1、@selector()
                    2、NSSelectorFromString()
                    3、sel_registerName函数
            char *method_types:类型 存储着方法的参数类型和返回值类型
            IMP method_imp:指向此方法的具体实现 指向的方法在内存中的位置
    Ivar:实例变量
 
    使用
        获取类名:class_getName
        获取父类名:class_getSuperclass
        获得实例变量的大小:class_getInstanceSize
 
        获得方法名:method_getName
        获得方法的实现:method_getImplementation
        获得方法的参数 和返回值类型的字符串:method_getTypeEncoding
        获得方法参数的个数:method_getNumberOfArguments
        设置实现方法:method_setImplementation
        交换两个方法:method_exchangeImplementations
        发送消息:objc_msgSend
        添加重写 一个方法:class_addMethod
        替换方法:class_replaceMethod
        获得实例方法:class_getInstanceMethod
        获得所有实例方法:class_copyMethodList
        获得方法的实现IMP:class_getMethodImplementation
        查询是否响应某个方法:class_respondsToSelector 

iOS之runtime

标签:

原文地址:http://www.cnblogs.com/liuzhi20101016/p/5463737.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!