为了避免这个问题,可以通过类别来重写系统和打印相关的方法。步骤:1、新建文件名:Foundation+Log的.m后缀的这一个文件,你没看错,就这个.m文件,不需要.h声明文件2、然后把以下源码全部拷贝进去即可:1 // 2 // NSDictionary+Log.m 3 // 01-掌握-多值参数和中文输出 4 // 5 6 #import <Foundation/Foundation.h> 7 8 // 重写系统的打印方法, 9 // 需要知道的是NSDictionary和NSArray各自都有打印方法10 // 也就是说,你重写了NSArray打印重写方法,打印NSArray对象才会执行重写的方法11 12 // 如果是通过子类来重写父类系统的方法,那么使用的时候就需要导入这个子类13 // 但是通过类别重写系统方法,就不需要import导入,因为系统中导入了已经有了同名的被重写的方法了,系统会优先加载类别里的重写的方法,连.h声明文件都可以不用了,因为系统中已经有.h声明文件14 15 @implementation NSDictionary (Log)16 17 //控制输出:对字典或者是数组进行排版18 -(NSString *)descriptionWithLocale:(id)locale19 {20 NSMutableString *string = [NSMutableString string];21 //设置开始22 [string appendString:@"{\n"];23 24 //设置key-value25 [self enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {26 [string appendFormat:@"%@:",key];27 [string appendFormat:@"%@,\n",obj];28 }];29 //设置结尾30 [string appendString:@"}"];31 32 //删除最后的逗号33 NSRange range = [string rangeOfString:@"," options:NSBackwardsSearch];34 if (range.location != NSNotFound) {35 [string deleteCharactersInRange:range];36 }37 return string;38 }39 40 /*41 -(NSString *)descriptionWithLocale:(id)locale indent:(NSUInteger)level42 {43 NSMutableString *string = [NSMutableString string];44 //设置开始45 [string appendString:@"{"];46 47 //设置key-value48 [self enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {49 50 [string appendFormat:@"%@:",key];51 [string appendFormat:@"%@",obj];52 }];53 //设置结尾54 [string appendString:@"}"];55 return string;56 }57 */58 @end59 60 61 @implementation NSArray (Log)62 63 //控制输出:对字典或者是数组进行排版64 -(NSString *)descriptionWithLocale:(id)locale65 {66 NSMutableString *string = [NSMutableString string];67 //设置开始68 [string appendString:@"["];69 70 //设置key-value71 [self enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {72 [string appendFormat:@"%@,",obj];73 74 }];75 //设置结尾76 [string appendString:@"]"];77 78 NSRange range = [string rangeOfString:@"," options:NSBackwardsSearch];79 if (range.location != NSNotFound) {80 [string deleteCharactersInRange:range];81 }82 83 return string;84 }85 86 @end