2009-09-09 3 views
7

Описание по умолчанию для экземпляра класса возвращает «ClassName: 0x105120». Как мне изменить метод ниже, чтобы просто вернуть «ClassName»?Описание для возврата только ClassName?

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

NSString *result; 

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

EDIT: в этом случае это было бы правильно? Хотя я понимаю, что если я хочу на самом деле получить Classname как NSString я должен использовать NSStringFromClass ([само класс])

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

заранее спасибо -gary-

+0

почему бы вам не просто использовать правильный путь, чтобы получить имя класса 'NSLog (@" _ инициализации: % @ ", NSStringFromClass ([self class]));'? –

ответ

20

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

... дает вам NSString с именем класса

Edit:

Для обоих iPhoneOS и MacOS путь является:

NSStringFromClass([self class])

+4

'NSStringFromClass' на самом деле является правильным способом сделать это и в Mac OS X. '-className' является частью категории в NSObject, предназначенной для сценариев. – kperryua

+0

Я не знал об этом, спасибо! –

+0

Или, в Objective-C 2.0 и выше, вы можете просто сказать: 'NSStringFromClass (self.class)' используя точечную нотацию. –

 Смежные вопросы

  • Нет связанных вопросов^_^