2011-10-13 17 views
7

बस यह जानने का प्रयास करें कि सबसे अच्छा अभ्यास क्या है: (NSError**) लेते हुए विधि का उपयोग करते समय, क्या यह nil या NULL भेजना बेहतर है?"त्रुटि: न्यूल" या "त्रुटि: शून्य"?

उदाहरण के लिए,

NSArray *items = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:NULL];

प्रलेखन में यह कहते हैं, "आप त्रुटि जानकारी नहीं चाहते हैं तो आप इस पैरामीटर के लिए नहीं के बराबर निर्दिष्ट कर सकता है।" दूसरी तरफ, क्योंकि यह एक डबल पॉइंटर है, न्यूल को भी समझ में आता है?

उत्तर

10

तकनीकी रूप से, NULL सही उत्तर है और दस्तावेज़ गलत हैं।

प्रैक्टिस में, यह महत्वपूर्ण नहीं है। NULL और nil सभी उद्देश्यों और उद्देश्यों के लिए समान हैं।

हालांकि यह बदल सकता है और भाषा अनुपालन में रह सकता है, यह टन और टन सामान तोड़ने के बिना बदल नहीं सकता है।

हालांकि, एक बग फ़ाइल करने के लिए स्वतंत्र महसूस करें।

+4

वे अपने प्रकार में भिन्न हैं। वे सभी शून्य हैं, लेकिन "न्यूल" एक शून्य * है, "शून्य" एक आईडी है, और "नील" एक क्लास पॉइंटर है। http://stackoverflow.com/questions/1564410/when-to-use-nil-and-null-in-objective-c – ARC

+0

युप; लिंक के लिए धन्यवाद। और यही कारण है कि, इस मामले में, यह पूर्ण होना चाहिए, क्योंकि शून्य/नील न तो पॉइंटर्स को पॉइंटर्स का प्रतिनिधित्व करते हैं; यह कुछ ऐसा हो जाएगा (शून्य * आईडी *) या कुछ ऐसे कास्ट बकवास। – bbum

+0

धन्यवाद दोस्तों। मुझे क्या चिंता है कि अगर विधि में किसी भी तरह से 'न्यूल' को संदर्भित किया गया है, तो क्या इससे समस्याएं नहीं आतीं? इस पोस्ट के मुताबिक [http://stackoverflow.com/questions/3581544/exception-codes-kern-protection-failure-at-0x00000000-error], 'nil' एक सुरक्षित विकल्प प्रतीत होता है? –

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