美文网首页
iOS开发拦截未实现方法的奔溃

iOS开发拦截未实现方法的奔溃

作者: Flynn_Lee | 来源:发表于2021-09-03 12:38 被阅读0次

Runtime的消息转发机制就不班门弄斧了,有很多资料。

我单独说一下,拦截未实现方法引起的奔溃

以控制器为例,其他的原理类似

1、写一个UIViewController的分类,重写-(id)forwardingTargetForSelector:(SEL)aSelector方法,

#import "UIViewController+test.h"
#import "testController.h"
#import <objc/runtime.h>
@implementation UIViewController (test)

-(id)forwardingTargetForSelector:(SEL)aSelector
{
    if (![self respondsToSelector:aSelector]) {
        return [testController new];
    }
    return [super forwardingTargetForSelector:aSelector];
}

2、写一个类专门解决这个问题

如何创建类就不赘述了,主要是重写方法+(BOOL)resolveInstanceMethod:(SEL)sel,(resolveClassMethod与其类似,不单独写了)动态添加了一个方法,替换没有实现的。

+(BOOL)resolveInstanceMethod:(SEL)sel
{
    if (![self respondsToSelector:sel]) {//如果没有响应就把imp换成我们新的imp,使APP不奔溃

        class_addMethod(self, sel, (IMP)myMethod, "v@:");//动态添加方法
    }
    
    return YES;
}

void myMethod(id obj, SEL _cmd) {
    NSLog(@"Objective-C");
}

一般使用场景是上架后不能及时更新的app

相关文章

  • iOS开发拦截未实现方法的奔溃

    Runtime的消息转发机制就不班门弄斧了,有很多资料。 我单独说一下,拦截未实现方法引起的奔溃 以控制器为例,其...

  • 优秀文章收集

    控件相关 iOS实现渐变背景色的三种方法ios开发中,xib加载view,loadNibNamed方法奔溃原因之一...

  • DYLD, Library not loaded: /usr/l

    奔溃日志 奔溃表现:iOS12.1 及以下启动奔溃奔溃日志: 解决方法:关闭bitcode,重新打包上传appst...

  • iOS 中常见 Crash 总结

    iOS编程中的常见奔溃汇总 1、找不到方法的实现unrecognized selector sent to ins...

  • iOS奔溃日志分析

    iOS奔溃日志分析 前言(扯淡) iOS奔溃日志能够比较有效的分析奔溃的原因,方便我们debug我们的项目。当然现...

  • Runtime拦截可变数组replaceObjectAtInde

    1、故意写一个相关崩溃代码 2、方法交换拦截 3、运行结果 发现拦截1成功,但是拦截2无效,最终奔溃。(但是也走进...

  • iOS收集Crash信息上报

    在iOS开发中,最严重的bug估计就是应用奔溃,如果应用奔溃了,除了做好挨骂的准备,还需要冷静的下来去处理这个事情...

  • iOS13 textfield的placeholder字体颜色崩

    由于iOS13禁止了textfield通过KVC获取私有属性,出现奔溃问题 奔溃报错Access to UITex...

  • Java拦截器实现

    java拦截器实现功能类似于aop功能的实现,实现拦截部分方法,一般用于类似 登录进入A页面,未登录进入B页面实现...

  • 优质文集

    iOS UIWebView URL拦截 实现网页过滤,URL拦截

网友评论

      本文标题:iOS开发拦截未实现方法的奔溃

      本文链接:https://www.haomeiwen.com/subject/mifkwltx.html