_LSDefaults 崩溃解决办法

最近公司也不知道从哪买的了一套,框架很老了,pod更新之后到处报错,解决报错问题,解决了很长时间,头疼,算了还是用原来项目也不更新框架了,跑起来再说。结果跑起来之后,随便点点都报错,报错信息如下:  本文借鉴他人,引用请标注出处



解决办法:可以把如下代码作为NSObject扩展类添加到项目中,引用即可。

比如创建一个NSObject的分类"ZSKJNSObject+NSObject.h"

#pragma mark - 这个方法解决到处崩溃的问题

+ (void)load{


    SELoriginalSelector =@selector(doesNotRecognizeSelector:);

    SELswizzledSelector =@selector(sw_doesNotRecognizeSelector:);

    Method originalMethod = class_getClassMethod(self, originalSelector);

    Method swizzledMethod = class_getClassMethod(self, swizzledSelector);

    if(class_addMethod(self, originalSelector, method_getImplementation(swizzledMethod), method_getTypeEncoding(swizzledMethod))){

        class_replaceMethod(self, swizzledSelector, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod));

    }else{

        method_exchangeImplementations(originalMethod, swizzledMethod);

    }

}


+ (void)sw_doesNotRecognizeSelector:(SEL)aSelector{

    //处理 _LSDefaults 崩溃问题

    if([[selfdescription] isEqualToString:@"_LSDefaults"] && (aSelector ==@selector(sharedInstance))){

        //冷处理...

        return;

    }

    [selfsw_doesNotRecognizeSelector:aSelector];

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言: unrecognized selector类型的crash是因为一个对象调用了一个不属于它的方法导致的。要...
    盗梦49阅读 943评论 0 4
  • Runtime消息传递: 一个对象的方法像这样[obj foo],编译器转成消息发送objc_msgSend(ob...
    飞哥漂流记阅读 249评论 0 0
  • 本文转载自:http://yulingtianxia.com/blog/2014/11/05/objective-...
    ant_flex阅读 798评论 0 1
  • 本文详细整理了 Cocoa 的 Runtime 系统的知识,它使得 Objective-C 如虎添翼,具备了灵活的...
    lylaut阅读 825评论 0 4
  • 推荐指数: 6.0 书籍主旨关键词:特权、焦点、注意力、语言联想、情景联想 观点: 1.统计学现在叫数据分析,社会...
    Jenaral阅读 5,752评论 0 5