दिलचस्प पोस्ट
दशमलव, फ्लोट और डबल में अंतर। नेट? खोज इंजन – ल्यूसीन या सोलर PHP: पेज रिफ्रेश का पता लगाएं कस्टम बटन स्थिति कैसे जोड़ें सी # में मशीन का मैक पता पाने के लिए विश्वसनीय तरीका पायथन में अतुल्यकालिक विधि कॉल? JQuery का उपयोग कर अस्थायी अजाक्स अनुरोध मैं वर्तमान पद्धति को बुलाए जाने वाली विधि कैसे पा सकता हूँ? किसी भी शेल कमांड को आउटपुट कैसे बनाया जाए? पैकेज में सभी वर्गों के नाम कैसे प्राप्त करें? ज़ूम कैनवास टू माउस कर्सर प्रभाव में open_basedir प्रतिबंध। फ़ाइल (/) अनुमत पथ के भीतर नहीं है: मूल प्रक्रिया को मार दिया जाता है जब बाल प्रक्रिया को मार डालो अभिव्यक्ति का मूल्यांकन करने में असमर्थ क्योंकि कोड ऑप्टिमाइज़ किया गया है या कोई स्थानीय फ़्रेम कॉल स्टैक के शीर्ष पर है मूल्य के आधार पर सर्कल आकार के साथ एंड्रॉइड में एनीमेशन के साथ एक सर्कल कैसे खींचा

शून्य, शून्य और, उद्देश्य- सी में अशक्त के बीच का अंतर

मैं nil , NIL और null बीच के अंतर को जानना चाहता हूं। मैं चारों ओर googled है और यह पाया:

nil -> शून्य-सूचक वस्तु-सी ऑब्जेक्ट के लिए

NIL -> शून्य-सूचक वस्तु-सी कक्षा में

null -> अशक्त सूचक प्राथमिक प्रकार या डेटा की अनुपस्थिति के लिए

लेकिन मैं स्पष्ट रूप से "उद्देश्य-सी वस्तु" और "वर्ग" शब्द को समझने में असमर्थ हूं

कृपया मुझे यह समझाओ इसके अलावा, NSNull या NSNil जैसे उद्देश्य सी में कोई शब्द है? यदि हां, तो कृपया इसके लिए क्या समझाएं।

Solutions Collecting From Web of "शून्य, शून्य और, उद्देश्य- सी में अशक्त के बीच का अंतर"

nil उद्देश्य-सी ऑब्जेक्ट्स के लिए शाब्दिक शून्य मान है, जो कि सार प्रकार id या किसी भी उद्देश्य- C प्रकार @interface माध्यम से घोषित किया @interface । उदाहरण के लिए:

 NSString *someString = nil; NSURL *someURL = nil; id someObject = nil; if (anotherObject == nil) // do something 

Nil कक्षा-कक्षा के लिए, उद्देश्य-सी वर्गों के लिए शाब्दिक शून्य मूल्य है। चूंकि अधिकांश कोड को कक्षाओं को संदर्भित करने के लिए चर की ज़रूरत नहीं होती है, इसका उपयोग सामान्य नहीं है। एक उदाहरण है:

 Class someClass = Nil; Class anotherClass = [NSString class]; 

NULL मनमानी सी पॉइंटर्स के लिए शाब्दिक शून्य मान है उदाहरण के लिए,

 int *pointerToInt = NULL; char *pointerToChar = NULL; struct TreeNode *rootNode = NULL; 

NSNull वस्तुओं के लिए एक वर्ग है जो शून्य का प्रतिनिधित्व करती है। वास्तव में, केवल एक ऑब्जेक्ट है, अर्थात् जो वापस आ जाता है +[NSNull null] यह nil से अलग है क्योंकि nil एक वास्तविक शून्य मान है, अर्थात, यह एक ऑब्जेक्ट नहीं है NSNull का एक उदाहरण, दूसरी तरफ, एक उचित वस्तु है।

NSNull अक्सर फाउंडेशन संग्रह में उपयोग किया जाता है क्योंकि वे nil मानों को संग्रहीत नहीं कर सकते हैं। शब्दकोशों के मामले में -objectForKey: यह इंगित करने के लिए nil दिया जाता है कि किसी कुंजी को शब्दकोश में कोई संबंधित ऑब्जेक्ट नहीं है, यानी, कुंजी को शब्दकोश में नहीं जोड़ा गया है यदि आप इसे स्पष्ट करना चाहते हैं कि आपके पास एक निश्चित कुंजी है लेकिन इसमें अभी तक कोई मान नहीं है, तो आप [NSNull null] उपयोग कर सकते हैं।

उदाहरण के लिए, निम्नलिखित एक अपवाद फेंकता है क्योंकि शब्दकोश nil मूल्यों को संचय नहीं कर सकते हैं:

 NSMutableDictionary *dict = [NSMutableDictionary dictionary]; [dict setObject:nil forKey:@"someKey"]; 

दूसरी तरफ, निम्न कोड वैध है क्योंकि [NSNull null] एक गैर- nil वस्तु है:

 NSMutableDictionary *dict = [NSMutableDictionary dictionary]; [dict setObject:[NSNull null] forKey:@"someKey"]; 

यह उल्लेखनीय है कि फाउंडेशन संग्रहों में प्रारंभिक है जो सूची में तत्वों की संख्या निर्दिष्ट किए बिना ऑब्जेक्ट्स की सूची के अंत के लिए मार्कर के रूप में nil उपयोग करते हैं। ऐसा केवल इसलिए हो सकता है क्योंकि nil को फाउंडेशन संग्रह में नहीं रखा जा सकता है। उदाहरण के लिए,

 NSArray *array = [NSArray arrayWithObjects:@"one", @"two", nil]; 

NIL या NSNil , उद्देश्य-सी या ऐप्पल फाउंडेशन में ऐसी कोई चीजें नहीं हैं।

मुझे यकीन नहीं है, लेकिन मुझे लगता है कि nil को केवल एक id स्थान पर ही इस्तेमाल किया जाना चाहिए, जो जावा और सी ++ प्रोग्रामर एक object लिए एक pointer के रूप में सोचेंगे। गैर ऑब्जेक्ट पॉइंटर्स के लिए NULL उपयोग करें

nil आमतौर पर उद्देश्य- C ऑब्जेक्ट प्रकार के लिए उपयोग किया जाता है, जबकि NULL का उपयोग सी-स्टाइल संकेतक के लिए किया जाता है

मान लीजिए आपके पास क्लास MyClass फिर सम्मेलन द्वारा उपयोग किया जाता है यदि आप अपने उदाहरण को शून्य मान (जावा में null समान) प्रारंभ करना चाहते हैं अर्थात

 MyClass *obj = nil; 

और यदि आप अनावश्यक मान के लिए एक आदिम पॉइंटर को प्रारंभ करना चाहते हैं (जैसा कि ग में जैसा होता है) आप उपयोग करते हैं

 int *ptr = NULL; 

और यदि आप शून्य मान ( Class में null समान) के लिए Class संदर्भ में आरंभ करना चाहते हैं, तो उपयोग करें

 Class classRefOfMyClass = Nil; 

यह सिर्फ एक सम्मेलन है, नील या शून्य का एक ही अर्थ है और शायद शून्य, शून्य या शून्य सभी समान हैं।

यहाँ objc.h फ़ाइल में इन के लिए परिभाषा है

 #ifndef Nil # if __has_feature(cxx_nullptr) # define Nil nullptr # else # define Nil __DARWIN_NULL # endif #endif #ifndef nil # if __has_feature(cxx_nullptr) # define nil nullptr # else # define nil __DARWIN_NULL # endif #endif 

और stddef.h

 #define NULL ((void*)0) 

और __DARWIN_NULL में _types.h की परिभाषा

 #define __DARWIN_NULL ((void *)0) 

तो तार्किक रूप से कोई अंतर नहीं है मुख्य विचार यहां एक संकेतक को इनिशियलाइज़ करना C कि C या Objective-C टू 0 यदि आपको C ज्ञान C तो आप असाइन कर सकते हैं

 int *ptr = 0; 

एक पॉइंटर के लिए 0 कास्ट कास्टिंग बिना। जैसा कि आपको टाइपकास्ट 0 आवश्यकता नहीं है, उसे एक सूचक को निर्दिष्ट करने के लिए।

संक्षेप में वे सभी 0 और कुछ नहीं।

शून्य, शून्य और शून्य आपकी आवश्यकता पर निर्भर है

NSNull

NSArray और NSDictionary जैसी संग्रह शून्य मूल्यों को शामिल करने में सक्षम नहीं है।

 NSMutableDictionary *MymutableDictionary = [NSMutableDictionary dictionary]; MymutableDictionary[@"someKey"] = [NSNull null]; // Sets value of NSNull singleton for "someKey" NSLog(@"Keys: %@", [mutableDictionary allKeys]); 

शून्य

सभी ऑब्जेक्ट्स को ऑब्जेक्ट के लिए ऑब्जेक्ट को शून्य के रूप में शुरू होता है, इसलिए यह अनावश्यक है, उदाहरण के लिए, init विधियों में स्वयं (एसोसिएशन) = शून्य सेट करें।

अन्य भाषाओं में, जैसे सी ++, यह आपके प्रोग्राम को क्रैश कर देगा, लेकिन उद्देश्य-सी में, शून्य पर कोई विधि लागू करना शून्य मान देता है

 if (name != nil) { ........ } 

प्रतीक मूल्य मतलब

उद्देश्य-सी ऑब्जेक्ट के लिए शून्य (आईडी) 0 शब्दशः शून्य मान

उद्देश्य-सी कक्षाओं के लिए शून्य (कक्षा) 0 वास्तविक शून्य मूल्य

निल, नल और शून्य नीचे के साथ उपयोग किया जाता है

1> उद्देश्य सी कक्षा के लिए शून्य

उद्देश्य सी वस्तु के लिए 2> शून्य

3> सी पॉइंटर के लिए नल

उदाहरण:

1> कक्षा ए = नील;

2> एनएसएसटीइंग strName = शून्य;

3> चार * पॉइंटरकार = नल;

यह आपको शून्य, शून्य और शून्य के बीच के अंतर को समझने में मदद करेगी।

इन तीनों मूल्यों में शून्य या शून्य पॉइंटर का प्रतिनिधित्व किया गया है, मान अंतर यह है कि जबकि शून्य किसी भी सूचक के लिए शून्य का प्रतिनिधित्व करता है, शून्य ऑब्जेक्ट्स (जैसे, आईडी) के लिए विशिष्ट है और शून्य कोई भी सूचक नहीं है। दस्तावेज़ उद्देश्यों के लिए सही परिस्थिति में सही नल वस्तु का उपयोग करने के लिए इसे एक सर्वोत्तम अभ्यास माना जाना चाहिए, भले ही कोई भी मिश्रण और मेल खाने से किसी को रोक न दें जैसा कि वे साथ जाते हैं

नीचे दिए गए लिंक आपकी सहायता कर सकते हैं:

http://nshipster.com/nil/

यहां लिंक से कुछ महत्वपूर्ण हिस्सा है:

यहां छवि विवरण दर्ज करें