"description" 方法究竟在哪里被覆盖?
Where exactly does the "description" method get overriden?
description
方法是NSObject
class的class方法。我猜是class方法,因为NSObject
无法初始化
当我这样做时:
NSLog(@"%@", [NSObject description]);
打印出来:
NSObject
但是当我创建一个直接继承自 NSObject
的 class 并执行此操作时:
MyNewClass *obj = [[MyNewClass alloc] init];
NSLog(@"%@", obj);
这会打印出如下内容:
<MyNewClass: 0x4b234a0>
我没有专门覆盖 description
方法,它是如何被我的新 class 覆盖的?
那是因为NSObject
有两个方法:
+ (NSString *)description; // Class method
- (NSString *)description; // Instance method
前者在 NSObject class and later one in in NSObject Protocol 中定义。
description
方法是NSObject
class的class方法。我猜是class方法,因为NSObject
无法初始化
当我这样做时:
NSLog(@"%@", [NSObject description]);
打印出来:
NSObject
但是当我创建一个直接继承自 NSObject
的 class 并执行此操作时:
MyNewClass *obj = [[MyNewClass alloc] init];
NSLog(@"%@", obj);
这会打印出如下内容:
<MyNewClass: 0x4b234a0>
我没有专门覆盖 description
方法,它是如何被我的新 class 覆盖的?
那是因为NSObject
有两个方法:
+ (NSString *)description; // Class method
- (NSString *)description; // Instance method
前者在 NSObject class and later one in in NSObject Protocol 中定义。