Runtime的方法交换

Runtime知道如何用runtime交换方法,但是思考了下,没有找到非常好的实际价值,可能实力不够吧。先写下来,作为积累。


+(void)load
{
//class_getClassMethod(<#__unsafe_unretained Class cls#>, <#SEL name#>) //获取方法名
//method_exchangeImplementations(<#Method m1#>, <#Method m2#>)          //交换方法

Method system_imageNamed = class_getClassMethod([UIImage class], @selector(imageNamed:));

Method yh_imageNamed = class_getClassMethod([UIImage class], @selector(yh_imageNamed:));

method_exchangeImplementations(system_ImageNamed, yh_ImageNamed);

}

+ (UIImage *)yh_imageNamed:(NSString *)name
{
    UIImage * image = [UIImage yh_imageNamed:name];
    if (image == nil) {
        NSLog(@"加载的图片名为空");
     }
    return image;
}

@end


再一个,在+(void)load这个方法里写方法的交换,原因是load方法只会执行一次,刚好符合交换方法的要求。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 具体总结操作如下: 创建一个这个类的分类. 新建一个新的参数列表相同的方法. 在方法里写自己的代码, 并在代码最后...
    子键_北京不眠夜阅读 1,126评论 0 0
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,885评论 0 9
  • Objective C类方法load和initialize的区别过去两个星期里,为了完成一个工作,接触到了NSOb...
    亦晴工作室阅读 5,169评论 0 10
  • 婆娑起舞的身姿 引发多少文人墨客 吟诵歌赋 沙沙的天籁之音 注定无人能懂 仰望天空寻觅属于自己的星星 尽管看不见 ...
    蒹葭苍苍123阅读 1,238评论 5 3
  • 看到《女儿红》纯属偶然,封面是周迅,我一直是比较喜欢这个女子的。 女儿红其实只是一坛酒。结婚那天喝的喜酒。 ...
    萧阳2015阅读 4,728评论 0 0

友情链接更多精彩内容