美文网首页
[__NSCFNumber length]奔溃问题

[__NSCFNumber length]奔溃问题

作者: Geniune | 来源:发表于2019-01-04 13:06 被阅读9次

最近遇到个线上问题,几百年没动过的模块出现了闪退现象,看了一个Crash log,都闪退在同一个问题上:

[__NSCFNumber length]: unrecognized selector sent to instance 0xb000000000000003 

查看友盟错误统计列表,错误也均为同一个:


截图.png

导致该问题原因:

  1. 先前与服务器接口定义为string类型的数据在iOS本地收到的是NSNumber类型(元凶)
  2. 调用UILabel对象setText:方法时,若将nil或非NSString类型对象赋值,Crash 现象发生(本地未做容错)

解决办法:
首先解决服务器数据类型不匹配问题。

对UILabel进行扩展
UILabel+Safe.m代码如下:

#import "UILabel+Safe.h"
#import "NSObject+SafeSwizzle.h"

@implementation UILabel (Safe)

+ (void)load{
    
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{

         [self exchangeInstance:[UILabel class] selector:@selector(setText:) withSwizzledSelector:@selector(safe_setText:)];
    });
}

- (void)safe_setText:(NSString *)text{
    
    if(!text){
        
        text = @"";
    }
    
    if(![text isKindOfClass:[NSString class]]){
        
        text = [NSString stringWithFormat:@"%@", text];
    }

    // invoke originalimplemention
    [self safe_setText:text];
}

@end

保证Category文件在工程中即可,不需要import。原先label.text = 赋值方法即使使用非NSString类型的对象或nil也不会Crash了

UILabel *label = [[UILabel alloc]init];
label.text = nil;//Crash !!
[self.view addSubview:label];

相关文章

  • [__NSCFNumber length]奔溃问题

    最近遇到个线上问题,几百年没动过的模块出现了闪退现象,看了一个Crash log,都闪退在同一个问题上: 查看友盟...

  • XCode错误总结

    1.reason: '-[__NSCFNumber length]: unrecognized selector ...

  • [__NSCFNumber length]: unrecogni

    今天在写项目的时候,运行程序出现崩溃。错误代码为: [__NSCFNumber length]: unrecogn...

  • iOS '-[__NSCFNumber length]:

    联系人:石虎 QQ:1224614774昵称:嗡嘛呢叭咪哄 QQ群:807236138群称:iOS 技术交流学习群...

  • 错误:[__NSCFNumber length]: unreco

    原因: 可能是你把整形变量直接赋值给NSString类型变量,没有进行转化。比如我出现的错误:

  • 遇见[__NSCFNumber length]: unrecog

    网络请求到的number 数据类型是:NSNumber 类型建模时模型Model 对应的类型也应该是 NSNumb...

  • 解决-[__NSCFNumber length]: unreco

    错误问题如下图: 这个错误是解析从服务器请求的参数 @”carLossFee”数据类型为double类型,而在使用...

  • JSON数据解析之NSNumber与int

    今天我自己练习网易新闻的时候遇到了一个问题 编译器报了这样一个错误 -[__NSCFNumber length]:...

  • Xcode奔溃问题

    经常崩溃,一天开发下来崩溃数十次,无解试过删除xcuserdata,重装Xcode,都不起作用 电脑型号,以及系统...

  • UITextField奔溃问题

    项目在测试中遇到一个问题,当手机开启搜狗输入法点击textfield时软件会闪退,奔溃定位到了UIColor上。分...

网友评论

      本文标题:[__NSCFNumber length]奔溃问题

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