2009-09-09 62 views
7

类实例的默认描述返回“ClassName:0x105120”。我如何修改下面的方法来返回“ClassName”?说明只返回ClassName?

// The code below just returns the address ... 
- (NSString *)description { 

NSString *result; 

result = [NSString stringWithFormat:@"%p", self]; 
    return result; 
} 

编辑:在这种情况下,这将是正确的?虽然我明白,如果我想真正得到一个className作为一个NSString我应该使用NSStringFromClass([个体经营类])

- (id)init { 
NSLog(@"_init: %@", [self class]); 
[super init]; 
return self; 
} 

在此先感谢-gary-

+0

你为什么不只是用正确的方法来获取类'的NSLog(名@“_ INIT: %@“,NSStringFromClass([self class]));'? – 2009-09-09 20:23:25

回答

20

的iPhoneOS:NSStringFromClass([self class])
的MacOS : [self className]

...让你与类名

一个NSString编辑:

对于这两个的iPhoneOS和MacOS要走的路是:

NSStringFromClass([self class])

+4

'NSStringFromClass'实际上也是在Mac OS X上执行它的正确方法。 '-className'是NSObject用于脚本编写的类别的一部分。 – kperryua 2009-09-09 14:55:10

+0

我没有意识到这一点,谢谢! – 2009-09-09 15:03:32

+0

或者,在Objective-C 2.0及更高版本中,您可以简单地使用点符号表示:'NSStringFromClass(s​​elf.class)'。 – 2016-07-21 03:31:34