• 运行时Runtime的API


    const char * class_getName(Class cls);

    返回类的名称。

     

    Class class_getSuperclass(Class cls);

    返回类的超类。

     

    Class class_setSuperclass(Class cls, Class newSuper);

    设置给定类的超类。

     

    BOOL class_isMetaClass(Class cls);

    返回一个布尔值,指示类对象是否为元类。

     

    size_t class_getInstanceSize(Class cls);

    返回类的实例大小。

     

    Ivar class_getInstanceVariable(Class cls, const char *name);

    返回Ivar给定类的指定实例变量。

     

    Ivar class_getClassVariable(Class cls, const char *name);

    返回Ivar给定类的指定类变量。

     

    BOOL class_addIvar(Class cls, const char *name, size_t size, uint8_t alignment, const char *types);

    向类添加新的实例变量。

     

    Ivar  _Nonnull * class_copyIvarList(Class cls, unsigned int *outCount);

    描述类声明的实例变量。

     

    const uint8_t * class_getIvarLayout(Class cls);

    返回Ivar给定类的布局描述。

     

    void class_setIvarLayout(Class cls, const uint8_t *layout);

    设置Ivar给定类的布局。

     

    const uint8_t * class_getWeakIvarLayout(Class cls);

    返回Ivar给定类的弱s 布局的描述。

     

    void class_setWeakIvarLayout(Class cls, const uint8_t *layout);

    设置Ivar给定类的弱s 的布局。

     

    objc_property_t class_getProperty(Class cls, const char *name);

    返回具有给定类的给定名称的属性。

     

    objc_property_t  _Nonnull * class_copyPropertyList(Class cls, unsigned int *outCount);

    描述类声明的属性。

     

    BOOL class_addMethod(Class cls, SEL name, IMP imp, const char *types);

    向具有给定名称和实现的类添加新方法。

     

    Method class_getInstanceMethod(Class cls, SEL name);

    返回给定类的指定实例方法。

     

    Method class_getClassMethod(Class cls, SEL name);

    返回指向描述给定类的给定类方法的数据结构的指针。

     

    Method  _Nonnull * class_copyMethodList(Class cls, unsigned int *outCount);

    描述类实现的实例方法。

     

    IMP class_replaceMethod(Class cls, SEL name, IMP imp, const char *types);

    替换给定类的方法的实现。

     

    IMP class_getMethodImplementation(Class cls, SEL name);

    返回在特定消息发送到类的实例时将调用的函数指针。

     

    IMP class_getMethodImplementation_stret(Class cls, SEL name);

    返回在特定消息发送到类的实例时将调用的函数指针。

     

    BOOL class_respondsToSelector(Class cls, SEL sel);

    返回一个布尔值,指示类的实例是否响应特定选择器。

     

    BOOL class_addProtocol(Class cls, Protocol *protocol);

    将协议添加到类中。

     

    BOOL class_addProperty(Class cls, const char *name, const objc_property_attribute_t *attributes, unsigned int attributeCount);

    向类添加属性。

     

    void class_replaceProperty(Class cls, const char *name, const objc_property_attribute_t *attributes, unsigned int attributeCount);

    替换类的属性。

     

    BOOL class_conformsToProtocol(Class cls, Protocol *protocol);

    返回一个布尔值,指示类是否符合给定协议。

     

    Protocol * _Nonnull * class_copyProtocolList(Class cls, unsigned int *outCount);

    描述了类所采用的协议。

     

    int class_getVersion(Class cls);

    返回类定义的版本号。

     

    void class_setVersion(Class cls, int version);

    设置类定义的版本号。

     

    Class objc_getFutureClass(const char *name);

    由CoreFoundation的免费桥接使用。

     

    void objc_setFutureClass (

       Class cls,

       const char *name

    );

    由CoreFoundation的免费桥接使用。

     

    Class objc_allocateClassPair(Class superclass, const char *name, size_t extraBytes);

    创建一个新类和元类。

     

    void objc_disposeClassPair(Class cls);

    销毁一个类及其相关的元类。

     

    void objc_registerClassPair(Class cls);

    注册使用分配的类。objc_allocateClassPair

     

    Class objc_duplicateClass(Class original, const char *name, size_t extraBytes);

    由Foundation的Key-Value Observing使用。

     

    id class_createInstance(Class cls, size_t extraBytes);

    创建类的实例,为默认malloc内存区域中的类分配内存。

     

    id objc_constructInstance(Class cls, void *bytes);

    在指定位置创建类的实例。

     

    void * objc_destructInstance(id obj);

    在不释放内存的情况下销毁类的实例并删除其任何关联的引用。

     

    id object_copy(id obj, size_t size);

    返回给定对象的副本。

     

    id object_dispose(id obj);

    释放给定对象占用的内存。

     

    Ivar object_setInstanceVariable(id obj, const char *name, void *value);

    更改类实例的实例变量的值。

     

    Ivar object_getInstanceVariable(id obj, const char *name, void * _Nullable *outValue);

    获取类实例的实例变量的值。

     

    void * object_getIndexedIvars(id obj);

    返回指向使用给定对象实例分配的任何额外字节的指针。

     

    id object_getIvar(id obj, Ivar ivar);

    读取对象中实例变量的值。

     

    void object_setIvar(id obj, Ivar ivar, id value);

    设置对象中实例变量的值。

     

    const char * object_getClassName(id obj);

    返回给定对象的类名。

     

    Class object_getClass(id obj);

    返回对象的类。

     

    Class object_setClass(id obj, Class cls);

    设置对象的类。

     

    int objc_getClassList(Class  _Nonnull *buffer, int bufferCount);

    获取已注册的类定义列表。

     

    Class  _Nonnull * objc_copyClassList(unsigned int *outCount);

    创建并返回指向所有已注册类定义的指针列表。

     

    Class objc_lookUpClass(const char *name);

    返回指定类的类定义。

     

    id objc_getClass(const char *name);

    返回指定类的类定义。

     

    Class objc_getRequiredClass(const char *name);

    返回指定类的类定义。

     

    id objc_getMetaClass(const char *name);

    返回指定类的元类定义。

     

    const char * ivar_getName(Ivar v);

    返回实例变量的名称。

     

    const char * ivar_getTypeEncoding(Ivar v);

    返回实例变量的类型字符串。

     

    ptrdiff_t ivar_getOffset(Ivar v);

    返回实例变量的偏移量。

     

    void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy);

    使用给定的键和关联策略为给定对象设置关联值。

     

    id objc_getAssociatedObject(id object, const void *key);

    返回与给定键的给定对象关联的值。

     

    void objc_removeAssociatedObjects(id object);

    删除给定对象的所有关联。

     

    id objc_msgSend(id self, SEL op, …);

    将具有简单返回值的消息发送到类的实例。

     

    long double objc_msgSend_fpret(id self, SEL op, …);

    将具有浮点返回值的消息发送到类的实例。

     

    void objc_msgSend_stret(id self, SEL op, …);

    将具有数据结构返回值的消息发送到类的实例。

     

    id objc_msgSendSuper(struct objc_super *super, SEL op, …);

    将具有简单返回值的消息发送到类的实例的超类。

     

    void objc_msgSendSuper_stret(struct objc_super *super, SEL op, …);

    将具有数据结构返回值的消息发送到类的实例的超类。

     

    id method_invoke(id receiver, Method m, …);

    调用指定方法的实现。

     

    void method_invoke_stret(id receiver, Method m, …);

    调用返回数据结构的指定方法的实现。

     

    SEL method_getName(Method m);

    返回方法的名称。

     

    IMP method_getImplementation(Method m);

    返回方法的实现。

     

    const char * method_getTypeEncoding(Method m);

    返回描述方法参数和返回类型的字符串。

     

    char * method_copyReturnType(Method m);

    返回描述方法返回类型的字符串。

     

    char * method_copyArgumentType(Method m, unsigned int index);

    返回描述方法的单个参数类型的字符串。

     

    void method_getReturnType(Method m, char *dst, size_t dst_len);

    通过引用返回描述方法返回类型的字符串。

     

    unsigned int method_getNumberOfArguments(Method m);

    返回方法接受的参数数。

     

    void method_getArgumentType(Method m, unsigned int index, char *dst, size_t dst_len);

    通过引用返回描述方法的单个参数类型的字符串。

     

    struct objc_method_description * method_getDescription(Method m);

    返回指定方法的方法描述结构。

     

    IMP method_setImplementation(Method m, IMP imp);

    设置方法的实现。

     

    void method_exchangeImplementations(Method m1, Method m2);

    交换两种方法的实现。

     

    const char * _Nonnull * objc_copyImageNames(unsigned int *outCount);

    返回所有已加载的Objective-C框架和动态库的名称。

     

    const char * class_getImageName(Class cls);

    返回类源自的动态库的名称。

     

    const char * _Nonnull * objc_copyClassNamesForImage(const char *image, unsigned int *outCount);

    返回指定库或框架中所有类的名称。

    const char * sel_getName(SEL sel);

    返回给定选择器指定的方法的名称。

     

    SEL sel_registerName(const char *str);

    使用Objective-C运行时系统注册方法,将方法名称映射到选择器,并返回选择器值。

     

    SEL sel_getUid(const char *str);

    使用Objective-C运行时系统注册方法名称。

     

    BOOL sel_isEqual(SEL lhs, SEL rhs);

    返回一个布尔值,指示两个选择器是否相等。

     

    Protocol * objc_getProtocol(const char *name);

    返回指定的协议。

     

    Protocol * _Nonnull * objc_copyProtocolList(unsigned int *outCount);

    返回运行时已知的所有协议的数组。

     

    Protocol * objc_allocateProtocol(const char *name);

    创建一个新的协议实例。

     

    void objc_registerProtocol(Protocol *proto);

    使用Objective-C运行时注册新创建的协议。

     

    void protocol_addMethodDescription(Protocol *proto, SEL name, const char *types, BOOL isRequiredMethod, BOOL isInstanceMethod);

    向协议添加方法。

     

    void protocol_addProtocol(Protocol *proto, Protocol *addition);

    将已注册的协议添加到正在构建的另一个协议中。

     

    void protocol_addProperty(Protocol *proto, const char *name, const objc_property_attribute_t *attributes, unsigned int attributeCount, BOOL isRequiredProperty, BOOL isInstanceProperty);

    将属性添加到正在构建的协议中。

     

    const char * protocol_getName(Protocol *proto);

    返回协议的名称。

     

    BOOL protocol_isEqual(Protocol *proto, Protocol *other);

    返回一个布尔值,指示两个协议是否相等。

     

    struct objc_method_description * protocol_copyMethodDescriptionList(Protocol *proto, BOOL isRequiredMethod, BOOL isInstanceMethod, unsigned int *outCount);

    返回满足给定协议的给定规范的方法的方法描述数组。

     

    struct objc_method_description protocol_getMethodDescription(Protocol *proto, SEL aSel, BOOL isRequiredMethod, BOOL isInstanceMethod);

    返回给定协议的指定方法的方法描述结构。

     

    objc_property_t  _Nonnull * protocol_copyPropertyList(Protocol *proto, unsigned int *outCount);

    返回协议声明的属性数组。

     

    objc_property_t protocol_getProperty(Protocol *proto, const char *name, BOOL isRequiredProperty, BOOL isInstanceProperty);

    返回给定协议的指定属性。

     

    Protocol * _Nonnull * protocol_copyProtocolList(Protocol *proto, unsigned int *outCount);

    返回协议采用的协议数组。

     

    BOOL protocol_conformsToProtocol(Protocol *proto, Protocol *other);

    返回一个布尔值,指示一个协议是否符合另一个协议。

     

    const char * property_getName(objc_property_t property);

    返回属性的名称。

     

    const char * property_getAttributes(objc_property_t property);

    返回属性的属性字符串。

     

    char * property_copyAttributeValue(objc_property_t property, const char *attributeName);

    给定属性名称,返回属性属性的值。

     

    objc_property_attribute_t * property_copyAttributeList(objc_property_t property, unsigned int *outCount);

    返回给定属性的属性属性数组。

     

    void objc_enumerationMutation(id obj);

    在foreach迭代期间检测到突变时由编译器插入。

     

    void objc_setEnumerationMutationHandler(void (*handler)(id));

    设置当前的变异处理程序。

     

    IMP imp_implementationWithBlock(id block);

    创建一个指向调用方法时调用指定块的函数的指针。

     

    id imp_getBlock(IMP anImp);

    返回与IMP使用创建的块关联的块。

     

    BOOL imp_removeBlock(IMP anImp);

    将块与IMP使用创建的块解除关联,并释放创建的块的副本。

     

    id objc_loadWeak(id  _Nullable *location);

    加载弱指针引用的对象并返回它。

     

    id objc_storeWeak(id  _Nullable *location, id obj);

    在变量中存储新值。__weak

     

    ———Class-Definition Data Structures

     

    Class

    表示Objective-C类的opaque类型。

     

    Method

    一个opaque类型,表示类定义中的方法。

     

    Ivar

    表示实例变量的opaque类型。

    Category

    表示类别的opaque类型。

     

    objc_property_t

    一个opaque类型,表示Objective-C声明的属性。

     

    IMP

    指向方法实现开始的指针。

     

    SEL

    定义表示方法选择器的opaque类型。

     

    objc_method_description

    定义Objective-C方法。

     

    objc_method_list

     

    objc_cache

    方法调用的性能优化。包含最近使用的方法的指针。

     

    objc_protocol_list

     

    objc_property_attribute_t

    定义属性属性。

     

    ———Instance Data Types

     

    id

    指向类实例的指针。

     

    objc_super

    指定实例的超类。

     

    ———Boolean Value

     

    BOOL

    键入以表示布尔值。

    ———Associative References

     

    objc_AssociationPolicy

    键入以指定关联的行为。

     

    ———Constants

     

    Boolean Values

    这些宏定义了方便的常量来表示布尔值。

     

    Null Values

    这些宏定义类和实例的空值。

     

    Dispatch Function Prototypes

    此宏指示是否必须将调度函数强制转换为适当的函数指针类型。

     

    Objective-C Root Class

    此宏将类注释为Objective-C根类。

     

    Local Variable Storage Duration

    此宏指示编译器在优化期间不应积极释放存储在某些局部变量中的值。

     

  • 相关阅读:
    一个Java对象到底占用多大内存
    Java 动态代理机制分析及扩展
    JVM内幕:Java虚拟机详解
    深度分析 Java 的 ClassLoader 机制(源码级别)
    Java异常的深入研究与分析
    HashMap的工作原理
    Java枚举常见7种用法
    left join 过滤条件写在on后面和写在where 后面的区别
    mysql left( right ) join使用on 与where 筛选的差异
    SQL索引优化
  • 原文地址:https://www.cnblogs.com/cchHers/p/11243213.html
Copyright © 2020-2023  润新知