2009-09-09 51 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