RunTime - linhay/Stem GitHub Wiki
public class RunTime全局hook objc_setAssociatedObject 唯一指针
var hookSetAssociatedObjectPointDEBUG-
let print
交换方法
public static func exchange(selector: String, by newSelector: String, class classType: AnyClass, kind: MethodKind = .instance)- selector: - selector: 被交换的方法
- newSelector: - newSelector: 用于交换的方法
- classType: - classType: 所属类型
- kind: - kind: 方法类型 | [类方法 | 对象方法]
交换方法
public static func exchange(selector: Selector, by newSelector: Selector, class classType: AnyClass, kind: MethodKind = .instance)- selector: - selector: 被交换的方法
- newSelector: - newSelector: 用于交换的方法
- classType: - classType: 所属类型
- kind: - kind: 方法类型 | [类方法 | 对象方法]
获取已注册类列表
public static func classList() -> [AnyClass]已注册类列表
全局hook objc_setAssociatedObject 函数
@available(OSX 10.15, *) @available(iOS 13.0, *) @available(tvOS 13.0, *) @available(watchOS 6.0, *) static func hookSetAssociatedObject(hook: objc_hook_setAssociatedObject?)- call: - call: call
获取类型元类
static func metaclass(from classType: AnyClass) -> AnyClass?- classType: - classType: 类型
元类
获取该类的实例变量大小
static func instanceSize(from classType: AnyClass) -> Int- classType: - classType: 类型
实例变量大小
获取方法列表
static func methods(from classType: AnyClass) -> [Method]- classType: - classType: 所属类型
方法列表
获取属性列表
static func properties(from classType: AnyClass) -> [objc_property_t]- classType: - classType: 所属类型
属性列表
获取协议列表
static func protocols(from classType: AnyClass) -> [Protocol]- classType: - classType: 所属类型
协议列表
成员变量列表
static func ivars(from classType: AnyClass) -> [Ivar]- classType: - classType: 类型
成员变量
static func get_list<T, U>(close: ( _ outcount: inout UInt32) -> AutoreleasingUnsafeMutablePointer<T>?, format: (T) -> U) -> [U]static func get_list<T, U>(close: ( _ outcount: inout UInt32) -> UnsafeMutablePointer<T>?, format: (T) -> U) -> [U]