一个有效的方法调配方案。
可以通过 SPM (推荐),或者通过复制 NSObject+FRZSwizzling.{h,m}
到你的项目中。
仓库中包含一个带有共享 scheme 的 xcodeproj
文件,用于调试目的。该项目可能兼容 Carthage—— 也可能不兼容。它未被官方支持,但可能对你有效。
@import FRZSwizzling; /* If installed via SPM. */
@implementation NSView (MyViewAdditions)
static void MySetFrame(id self, SEL _cmd, CGRect frame);
static void (*OriginalSetFrame)(id self, SEL _cmd, CGRect frame);
static void MySetFrame(id self, SEL _cmd, CGRect frame) {
// ***** CUSTOM WORK HERE *****
OriginalSetFrame(self, _cmd, frame);
// ***** OR HERE *****
}
+ (void)load
{
FSZ_CHECKED_SWIZZLE(NSView, setFrame:, MySetFrame, OriginalSetFrame);
}
@end
FRZSwizzling 源代码文件夹中的 include 文件夹是为了 SPM 兼容性而存在的。它包含一个特殊的 FRZSwizzling.h
伞状头文件,以及一个指向另一个(公共)头文件的软链接。
此项目最初由 François Lamboley 在职于 happn 期间创建。