Swizzlean 1.1.0

Swizzlean 1.1.0

测试已测试
语言 Obj-CObjective C
许可 MIT
发布最后发布2022年10月

rbaumbachRyan Baumbach 维护。



Swizzlean 1.1.0

  • Ryan Baumbach

Swizzlean Bitrise Cocoapod 版本 Cocoapod 平台 Carthage 兼容 许可

一种快速且“轻量”的方式来为 Objective-C 开发需求修改方法。

将 Swizzlean 添加到您的项目中

Cocoapods

CocoaPods是向项目中添加Swizzlean的推荐方式。

  1. Swizzlean添加到你的Podfile中:pod 'Swizzlean'
  2. 运行pod install来安装pods。
  3. 使用#import <Swizzlean/Swizzlean.h>将Swizzlean添加到你的文件中。

Swift Package Manager (SPM)

Swift Package Manager可以用来将Swizzlean添加到你的项目中

  1. 添加.package(url: "https://github.com/rbaumbach/Swizzlean", from: "1.1.0")
  2. 按照说明Swizzlean包添加到你的项目中。

Carthage

你也可以使用Carthage手动将Swizzlean框架添加到你的项目中。

  1. github "rbaumbach/Swizzlean"添加到你的Cartfile
  2. 按照说明手动将Swizzlean动态框架添加到你的项目中。

从Github克隆

  1. 从github克隆仓库并直接复制文件,或将其作为git子模块添加。
  2. 将Swizzlean和RuntimeUtils (.h 和 .m) 文件添加到你的项目中。

如何操作

  • 创建一个Swizzlean实例,传递你想swizzle的方法的类。
  • 调用swizzleInstanceMethod:withReplacementImplementation:进行实例方法的swizzle,传入要swizzle的方法的选择器和替换实现。当传入替换实现块时,第一个参数始终是id _self(指向正在swizzle的‘Class’的指针),之后跟随要swizzle的方法的其他参数。
  • 调用 swizzleClassMethod:withReplacementImplementation: 以执行类型方法,将需要替换的实现方法的选择器传递进去。
  • 您可以使用 currentInstanceMethodSwizzledcurrentClassMethodSwizzled 方法检查当前被替换的实例/类方法。
  • 通过调用 isInstanceMethodSwizzledisClassMethodSwizzled,您可以看到被替换方法的状况。
  • 使用重置方法来取消当前正在被替换的实例/类方法的替换。
  • 当 Swizzlean 对象被释放时,方法会自动重置。如果您希望在调用 dealloc 方法后保持方法的替换状态,将属性 resetWhenDeallocated = NO 设定。

示例使用

Swizzlean *swizzle = [[Swizzlean alloc] initWithClassToSwizzle:[NSString class]];
[swizzle swizzleInstanceMethod:@selector(intValue) withReplacementImplementation:^(id _self) {
    return 42;
}];
NSString *number7 = @"7";
NSLog(@"The int value for number7 is: %d", [number7 intValue]);
// returns - The int value for number7 is: 42
[swizzle resetSwizzledInstanceMethod];
NSLog(@"The int value for number7 is: %d", [number7 intValue]);
// returns - The int value for number7 is: 7

测试

本工程已配置使用 fastlane 来运行规格。

首先,在项目目录下运行 setup.sh 脚本以捆绑所需的宝石和 Cocoapods

$ ./setup.sh

然后使用 fastlane 在命令行上运行所有规格。

$ bundle exec fastlane specs

版本历史

版本历史可以在 发布页面 找到。

建议、请求、反馈和致谢

感谢您查阅 Swizzlean 满足您的破壳需求。任何反馈都可以发送到:[email protected]

感谢以下贡献者为保持 Swizzlean 理想化所做的努力:Erik Stromlund & Aaron Koop