关于MJRefresh报[NSTaggedPointerString substringToIndex:]的小问题

来源:互联网 发布:光纤交换机端口类型 编辑:程序博客网 时间:2024/06/06 02:40
从报错信息中可以看出是越界问题,问题发生在MJRefreshComponent.m文件的- (NSString *)localizedStringForKey:(NSString *)key withDefault:(NSString *)defaultString方法中,从方法里可以看出这是一个处理系统语言的方法,方法中写的是将入系统语言是简体中文,就更改成“zh-Hans”,但是你如果系统语言是英语的话,[NSLocale preferredLanguages].firstObject方法获取的就是en,NSRange range = [language rangeOfString:@"-" options:NSBackwardsSearch];

                language = [language substringToIndex:range.location];这个方法就会越界,所以为了避免越界,可以改成:

if (![language isEqualToString:@"en"]) {
            if ([UIDevice currentDevice].systemVersion.floatValue >= 9.0) {
                NSRange range = [language rangeOfString:@"-" options:NSBackwardsSearch];
                language = [language substringToIndex:range.location];
            }
        }

之后运行,无论是英语还是汉语,都可以完美运行

0 0
原创粉丝点击