2011-09-18 11 views
6

मैं जानना चाहता हूं कि कई NSLog() कॉल ऐप प्रदर्शन या स्मृति को प्रभावित करते हैं या नहीं। क्या किसी को ऐसी चीज के बारे में पता है?आईफोन/आईपैड: क्या कई एनएसएलओजी() कॉल ऐप प्रीफॉर्मेंस या मेमोरी को प्रभावित करते हैं?

मैं अपने ऐप में प्रत्येक फ़ंक्शन में एक एनएसएलओजी() कॉल करना चाहता हूं (जो बहुत है) ताकि मैं समस्याओं को हल करने और समस्याओं का पता लगाने के लिए देख सकूं।

धन्यवाद।

उत्तर

10

हां। तो मैं इसे अपनी पीएच फाइल में परिभाषित करता हूं।

#ifdef DEBUG 
# define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); 
#else 
# define DLog(...) 
#endif 

// ALog always displays output regardless of the DEBUG setting 
#define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); 

एनएसएलओजी का उपयोग करने के बजाय, मैं डीएलओजी और एएलओजी का उपयोग करता हूं।

(नोट या कॉपीराइट:। मैं कुछ अन्य अतः जिस पद मुझे याद नहीं से लंबे समय से बहुत पहले इस कोड को मिला मेरी टुकड़ा पुस्तकालय से इसे फिर से चिपकाने)

+0

हाँ, NSLogs आप डीबगिंग के लिए कोड में छोड़ने के लिए उम्मीद के लिए, आप मैक्रो है कि "डिबगिंग" लोगों को बाहर संकलित किया जा करने की अनुमति परिभाषित करना चाहिए। कुछ, ज़ाहिर है, हमेशा लॉग इन होना चाहिए, इसलिए वे एक अलग मैक्रो का उपयोग करें। '__PRETTY_FUNCTION__' और' __LINE__' जोड़ना स्पष्ट रूप से पहचानने की आवश्यकता को कम करता है कि आप कोड में कहां हैं। ("मुझे कोई त्रुटि हुई है" संदेश से कहीं अधिक बेकार नहीं है, जहां यह भेजा गया था, कोई सुराग नहीं है।) –

+0

यह इस विचार की उत्पत्ति है, जो इसके विकास को जानने के उत्सुक हैं: http: //iphoneincubator.com/blog/debugging/the-evolution-of-a-replacement-for-nslog – benvolioT

2

हां, यह प्रदर्शन को धीमा कर देता है, खासकर अगर समारोह को बहुत कम समय लेना चाहिए, NSLog (जो एक आई/ओ प्रक्रिया है) इसे अपेक्षा से अधिक समय लेगा।

7

'undefine' के लिए एक और आसान समाधान NSLog

.pch फ़ाइल में:

#ifndef DEBUG 
#define NSLog(...) /* */ 
#endif 
संबंधित मुद्दे

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