// 添加方法 BOOL class_addMethod ( Class cls, SEL name, IMP imp, const char *types ); // 获取实例方法 Methodclass_getInstanceMethod( Class cls, SEL name ); // 获取类方法 Methodclass_getClassMethod( Class cls, SEL name ); // 获取所有方法的数组 Method * 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 ); // 类实例是否响应指定的selector BOOL class_respondsToSelector ( Class cls, SEL sel );
协议的相关操作函数
1 2 3 4 5 6 7 8
// 添加协议 BOOL class_addProtocol( Class cls, Protocol *protocol ); // 返回类是否实现指定的协议 BOOL class_conformsToProtocol( Class cls, Protocol *protocol ); // 返回类实现的协议列表 Protocol * class_copyProtocolList( Class cls, unsignedint *outCount );
runtime的强大之处在于它能在运行时创建类和对象。
动态创建类
动态创建类涉及到以下几个函数:
1 2 3 4 5 6 7 8
// 创建一个新类和元类 Class objc_allocateClassPair( Class superclass, constchar *name, size_t extraBytes ); // 销毁一个类及其相关联的类 voidobjc_disposeClassPair( Class cls ); // 在应用中注册由objc_allocateClassPair创建的类 voidobjc_registerClassPair( Class cls );