iOSiOS学习ios 学习

iOS 的description 方法

2017-07-29  本文已影响659人  sttech

我们知道在开发中会经常的使用的NSLog来进行一些内容的日志输出。接下来主要讲述的是OC对象的NSLog的输出,一般情况下,我们在使用NSLog和%@输出某个对象的时候,会调用description的方法,返回值类型是一个NSString 类型的,所以description默认的返回的格式是<类名:对象地址>

屏幕快照 2017-07-29 13.38.29.png

在开发中的Array 和Dictrony 的分类中中可以重写它们的descriptionWithLocale:indent 方法 在xcode8以前可以重写descriptionWithLocale方法,进行log的输出


@implementation NSArray (Log)

//-(NSString *)description
//{
//
//    return  [super description];
//}

-(NSString *)descriptionWithLocale:(id)locale indent:(NSUInteger)level
{
    NSMutableString * mutString = [NSMutableString stringWithString:@"\n[\n"];
    [self enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        [mutString appendFormat:@"\t%@\n",obj];
    }];
    [mutString stringByAppendingString:@"]\n"];
    return  mutString.copy;
}

@end


@implementation NSDictionary (Log)


//-(NSString *)description
//{
//
//    return  [super description];
//}


-(NSString *)descriptionWithLocale:(id)locale indent:(NSUInteger)level
{
    NSMutableString * mutString = [NSMutableString stringWithString:@"\n{\n"];
    [self enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {
        [mutString appendFormat:@"\t%@ = %@\n",key,obj];
    }];
    [mutString stringByAppendingString:@"\n}\n"];
    return  mutString.copy;
}

@end

上一篇下一篇

猜你喜欢

热点阅读