STSwizzle 向 NSObject 添加了几个方法。一些方法允许对一个类的函数进行交换,其他方法允许对一个特定实例的函数进行交换。
如果您想知道,交换是交换当调用一个方法时将执行的指令的方法。
+ (void)swizzleClassMethod:(SEL)firstSelector withMethod:(SEL)secondSelector;
此方法允许您交换两个类方法。例如,您可以将 +(void)foo1
和 +(void)foo2
进行交换,以便当调用 foo1 方法时执行 foo2 函数,反之亦然。
+ (void)swizzleInstanceMethod:(SEL)firstSelector withMethod:(SEL)secondSelector;
此方法允许交换两个实例方法。这些方法将用于类的所有实例。
- (void)addMethodForSelector:(SEL)selector types:(char*)types implementation:(implementation_block)impl;
此方法允许向实例添加一个新方法。当传递给参数的 selector 在该实例上被调用时,执行参数中的实现代码块。
- (void)replaceMethodForSelector:(SEL)selector implementation:(implementation_block)impl;
此方法允许替换实例上的方法。当传递给参数的 selector 在该实例上被调用时,将执行参数中的实现代码块。
要将其组件包含在项目中,我建议您使用 Cocoapods
pod "STSwizzle"
添加到您的 Podfile。关于交换的文章将很快发布.