zoukankan      html  css  js  c++  java
  • AppDelegate 中调用UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCente一定几率下出现 #28502 NSInternalInconsistencyException Invalid parameter not satisfying: bundleProxy != nil

    2019年2月27日:

    修复bug:

    查找资料:

     

     

     

    解决方式:添加分类,对系统方法替换,做非空校验

     #import "UNUserNotificationCenter+Hack.h"

    #import <objc/runtime.h>

    @implementation UNUserNotificationCenter (Hack)
    + (void)load {
    static dispatch_once_t _onceToken;
    dispatch_once(&_onceToken, ^{
    [self safeHook];
    });
    }

    + (void)safeHook {

    /*hook UNUserNotificationCenter's systemMethod - (id)initWithBundleProxy:(id)arg1;*/
    NSString * orig_initWithBundleProxyName = @"initWithBundleProxy:";

    SEL orig_initWithBundleSelector = NSSelectorFromString(orig_initWithBundleProxyName);

    if (![self instancesRespondToSelector:orig_initWithBundleSelector]) {
    return;
    }

    SEL alt_initWithBundleSelector = @selector(hk_initWithBundleProxy:);
    Method origMethod = class_getInstanceMethod(self, orig_initWithBundleSelector);
    Method altMethod = class_getInstanceMethod(self, @selector(hk_initWithBundleProxy:));

    class_addMethod(self,
    orig_initWithBundleSelector,
    class_getMethodImplementation(self, orig_initWithBundleSelector),
    method_getTypeEncoding(origMethod));
    class_addMethod(self,
    alt_initWithBundleSelector,
    class_getMethodImplementation(self, alt_initWithBundleSelector),
    method_getTypeEncoding(altMethod));

    method_exchangeImplementations(origMethod, altMethod);
    }

    - (instancetype)hk_initWithBundleProxy:(id)arg1 {

    if (nil==arg1||NSNull.null==arg1) return nil;
    // return [self hk_initWithBundleProxy:nil]; //crash
    return [self hk_initWithBundleProxy:arg1];
    }

    @end

  • 相关阅读:
    fgets()函数读取键盘,去掉换行符或丢弃多余的字符
    c语言gets()函数与它的替代者fgets()函数
    基于京东手机销售数据用回归决策树预测价格
    「我去,这也能行!」令人惊叹的8个深度学习应用
    常见数据结构的 Python 实现(建议收藏)
    60 分钟极速入门 PyTorch
    大牛推荐的15本学习数据分析挖掘的好书
    排名前20的网页爬虫工具
    如何11 周打造全能Python工程师!
    初学者的编程自学指南
  • 原文地址:https://www.cnblogs.com/coolcold/p/10454867.html
Copyright © 2011-2022 走看看