博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
runtime真的超级好用
阅读量:5875 次
发布时间:2019-06-19

本文共 774 字,大约阅读时间需要 2 分钟。

前几天产品提出新需求,大致就是需要把这个项目所有关于图片加载的状态告诉用户提高用户体验,听到这里就觉得大事不妙了,毕竟是两年多的项目,改起来不难但是会很麻烦。之前有看过runtime的文档所以就谢了个demo试下,结果几分钟改完,测试完全ok。今天分享下代码,很简单老鸟勿喷。

因为runtime有一个交换方法的API我们借助这个API就实现了。首先我们先在分类自定义一个我们自己的方法(+ (instancetype)imageWithName:(NSString *)name),有人会喷为什么不在分类里直接重写(因为会把系统的功能给覆盖掉,而且分类中不能调用super.)

+ (void)load

{
    
    Method imageWithName = class_getClassMethod(self, @selector(imageWithName:));
    
    Method imageName = class_getClassMethod(self, @selector(imageNamed:));
    
    method_exchangeImplementations(imageWithName, imageName);
    
    
}
+ (instancetype)imageWithName:(NSString *)name
{
   
    UIImage *image = [self imageWithName:name];
    
    if (image == nil) {
        NSLog(@"状态信息打印");
    }
    
    return image;
}
简简单单几行代码就把系统的imageNamed:方法替换成我们的imageWithName:name靠谱的可以试下

转载于:https://www.cnblogs.com/whutDaniel/p/6400426.html

你可能感兴趣的文章
区块链
查看>>
Java中使用HttpRequest调用RESTfull的DELETE方法接口提示:How to fix HTTP method DELETE doesn't support output...
查看>>
中国商飞宣布将在2021年交付首架C919,不受认证进程的影响
查看>>
IaaS后时代,企业如何玩转云上的业务开发
查看>>
福特牵手伦敦出租车公司,试点自动驾驶拼车服务
查看>>
图像识别攻击还没完全解决,语音识别攻击又来了!
查看>>
Vim出现:_arguments:450: _vim_files: function definition file not found的问题解决
查看>>
一探究竟:善用 MaxCompute Studio 分析 SQL 作业
查看>>
商务部:社区零售业步入“黄金发展期” 大数据挖掘正当时
查看>>
Spark SQL在100TB上的自适应执行实践(转载)
查看>>
c++特性之一-----继承
查看>>
apache详解
查看>>
hdu 2298 Toxophily
查看>>
phantomjs-使用系统命令system
查看>>
极客DIY:打造属于自己的无线移动渗透测试箱
查看>>
上海10个项目入选工信部2017年智能制造专项拟支持项目名单
查看>>
ArcEngine中COM对象与其基础RCW分开后就不能再使用
查看>>
nginx default跳转
查看>>
用opencv摄像头视频的获取
查看>>
nginx(tengine)第三方模块 :ngx_cache_purge
查看>>