2009-09-09 12 views
7

क्लास इंस्टेंस के लिए डिफ़ॉल्ट विवरण "क्लासनाम: 0x105120" देता है। "क्लासनाम" को वापस करने के लिए नीचे दी गई विधि को मैं कैसे संशोधित कर सकता हूं?सिर्फ कक्षा नाम वापस करने के लिए विवरण?

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

NSString *result; 

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

संपादित करें: उस मामले में यह सही होगा? हालांकि मुझे समझ नहीं है कि मैं वास्तव में एक NSString मैं NSStringFromClass ([आत्म वर्ग]) पहले से

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

धन्यवाद -gary-

+0

क्यों तुम सिर्फ वर्ग 'NSLog (के नाम प्राप्त करने के लिए सही तरीका का उपयोग नहीं करते @" _ init: % @ ", एनएसएसटींगफ्रम क्लास ([स्वयं वर्ग]));'? –

उत्तर

20

iPhoneOS का उपयोग करना चाहिए के रूप में className प्राप्त करना चाहते हैं: NSStringFromClass([self class])
MacOS : [self className]

... तुम वर्ग के नाम

के साथ एक NSString देता है संपादित करें:

दोनों iPhoneOS और MacOS के लिए जाने का रास्ता है:

NSStringFromClass([self class])

+4

'NSStringFromClass' वास्तव में मैक ओएस एक्स पर भी ऐसा करने का उचित तरीका है। '-className' स्क्रिप्टिंग के लिए एनएसओब्जेक्ट पर एक श्रेणी का हिस्सा है। – kperryua

+0

मुझे इसके बारे में पता नहीं था, धन्यवाद! –

+0

या, उद्देश्य-सी 2.0 और उच्चतर में, आप बस कह सकते हैं: 'NSStringFromClass (self.class) 'डॉट नोटेशन का उपयोग कर। –

संबंधित मुद्दे