2009-04-21 22 views
6

डिबगिंग उद्देश्यों के लिए, मैं कंसोल में जितनी कक्षा की जानकारी कर सकता हूं, और संभावित रूप से रनटाइम जानकारी (जो वर्ग/फ़ंक्शन चलाता है, आदि) प्रदर्शित करना चाहता हूं।कक्षा और रनटाइम जानकारी कैसे प्राप्त करें?

क्या फ़ंक्शन, चर या यहां तक ​​कि (बाहरी) ढांचे के साथ ऐसा करने का कोई आसान तरीका है?

पीएस: मैं कोको टच का उपयोग कर रहा हूं।

+0

महान प्रश्न, धन्यवाद! –

उत्तर

8
एक कक्षा में

, यदि आप -(NSString *)description विधि ओवरलोड, आप आसानी से वर्ग की जानकारी प्रवेश कर सकते हैं साथ NSLog(@"%@", some_object);

यहाँ एक काल्पनिक उदाहरण है:

-(NSString *)description 
{ 
    return [NSString stringWithFormat:@"%@, %@, %d", 
             [super description], 
             class.object_ivar, 
             class.int_ivar]; 
} 

आप मानक सी मैक्रो का उपयोग कर सकते हैं नाम जैसी चीज़ों को पाने के लिए , फ़ाइल, लाइन नंबर इत्यादि ... एनएसटीएचड कक्षाओं का उपयोग इस बारे में जानकारी प्राप्त करने के लिए करें कि विधि किस विधि पर बुलाया जा रहा है।

मैंने इसे ट्विटर पर पोस्ट किया। http://twitter.com/kailoa/status/1349928820 यदि आप इस तरह के अधिक tidbits में रुचि रखते हैं तो मुझे फ़ॉलो करने के लिए स्वतंत्र महसूस करें। मैं उन्हें नियमित रूप से रखने की कोशिश करता हूं।

#define METHOD_LOG (NSLog(@"%@ %s\n%@", NSStringFromSelector(_cmd), __FILE__, self)) 
+0

धन्यवाद, यह मेरे लिए काम करता है। – Jake

+4

'__PRETTY_FUNCTION__' आपको कक्षा और किसी भी श्रेणी के साथ ही चयनकर्ता नाम देगा। यह सी ++ और ओब्जे-सी ++ के साथ भी काम करता है। यदि आप डीबगर का उपयोग करने की योजना बना रहे हैं, तो डिफॉल्ट द्वारा प्रिंट-ऑब्जेक्ट '-debugDescription' को आमंत्रित करता है, ताकि आप' डिस्क्रिप्शन 'द्वारा लौटाए गए से अधिक डिबगिंग-उपयुक्त विवरण प्रदान करने के लिए ओवरराइड कर सकें। –

+0

बहुत बढ़िया, धन्यवाद –

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