"description"方法究竟在哪里被覆盖?



description方法是NSObject类的一个类方法。我猜这是一个类方法,因为NSObject不能初始化。

当我这样做时:

NSLog(@"%@", [NSObject description]);

输出:

NSObject

但是当我创建一个直接继承自NSObject的类时,并这样做:

MyNewClass *obj = [[MyNewClass alloc] init];
NSLog(@"%@", obj);

输出如下:

<MyNewClass: 0x4b234a0>

我没有特别覆盖description方法,它是如何被我的新类覆盖的?

这是因为NSObject有两个方法:

+ (NSString *)description; // Class method 
- (NSString *)description; // Instance method 

前者在NSObject类中定义,后者在NSObject协议中定义。

最新更新