[10秒学会] - runtime之交换方法
2016-06-05 00:00
393 查看
摘要: [10秒学会] - runtime之交换方法
我们要修改[UIImage imageNamed:@"123"]; 没有该图片时报异常
@property (nonatomic, readonly, copy) NSArray<__kindof UIView *> *subviews;
UIImage+Image.h
+ (__kindof UIImage *)zdc_imageNamed:(NSString *)imageName;
我们要修改[UIImage imageNamed:@"123"]; 没有该图片时报异常
@property (nonatomic, readonly, copy) NSArray<__kindof UIView *> *subviews;
UIImage+Image.h
+ (__kindof UIImage *)zdc_imageNamed:(NSString *)imageName;
[code=language-objectivec]+ (UIImage *)zdc_imageNamed:(NSString *)imageName { // 1.加载图片 UIImage *image = [UIImage zdc_imageNamed:imageName]; /* 这一定要注意 防止死循环 */ /* 这一定要注意 防止死循环 */ /* 这一定要注意 防止死循环 */ // 2.判断功能 if (image == nil) { NSLog(@"加载image为空"); } return image; }
[code=language-objectivec]+ (void)load { // 交换方法实现,方法都是定义在类里面 // class_getMethodImplementation:获取方法实现 // class_getInstanceMethod:获取对象 // class_getClassMethod:获取类方法 // IMP:方法实现 // imageNamed // Class:获取哪个类方法 // SEL:获取方法编号,根据SEL就能去对应的类找方法 Method imageNameMethod = class_getClassMethod([UIImage class], @selector(imageNamed:)); // xmg_imageNamed Method zdc_imageNamedMethod = class_getClassMethod([UIImage class], @selector(zdc_imageNamed:)); // 交换方法实现 method_exchangeImplementations(imageNameMethod, zdc_imageNamedMethod); }
相关文章推荐
- [10秒学会] - runtime之动态添加方法
- 字典转模型KVC实现时 forUnderfinedKey
- iOS公众号
- 跳转到iframe的父窗口
- yii2分页扩展之实现跳转到具体某页
- xcode7 iOS 9 NSURLSession 索引还有点问题
- DNS的记录的介绍
- Docker大行其道—初识
- 控件的平移旋转缩放transform
- iOS图片拉伸三种方式
- Hibernate性能优化小结
- java深入分析web开发
- 《Java编程思想》第四版读书笔记 第十二章 通过异常处理错误
- jquery实现hover图片半透明效果
- Spark(六):SparkSQLAndDataFrames对结构化数据集与非结构化数据的处理
- Spark(七):局部套用和部分应用。
- 创业的第二百零一天
- 在Android上使用qemu-user运行可执行文件
- Twitter-Finagle使用ZK作为service discovery
- 扩展 EasyUI DataGrid tooltip