दिलचस्प पोस्ट
व्यू बिल्ड समय क्या है? मैं स्विफ्ट में टाइप के शब्दकोश में क्लास <ClassImplementingProtocol> प्रकार के मान को कैसे संग्रहीत करूँ? कैसे एक AngularJS प्रपत्र को कस्टम सत्यापन जोड़ने के लिए? रूबी के पास निजी और सुरक्षित तरीके क्यों हैं? कैसे संपर्क डेटाबेस में परिवर्तन के लिए सुनने के लिए जावास्क्रिप्ट काट / टुकड़ा / स्ट्रिंग में अंतिम वर्ण को छानना दो तिथियों मोंगोडीबी के बीच ऑब्जेक्ट खोजें प्रत्यक्ष बनाम नियुक्त – jQuery .on () सर्वर पर एक्सक्शंस डिक्टचर इन्फॉल्ट (यानी सेवाविशेषित्र से या <serviceDebug> कॉन्फ़िगरेशन वर्तन से) को शामिल करें चालू करें Linux / list.h में कंटेनर_ऑफ मैक्रो के पीछे तर्क समर्थन के साथ एक पसंदीदा स्क्रीन बनाना (v21) टूलबार मैं इसे लॉक किए बिना एक टेक्स्ट फ़ाइल कैसे पढ़ सकता / सकती हूं? जीसीसी: प्रिंटफ़ और लंबे समय से दोहरी गलत आउटपुट की ओर जाता है। रेगेक्स: मैं यह चाहता हूं कि और वह और … किसी भी क्रम में जावास्क्रिप्ट दिनांक प्रारूप में MySql दिनांकटाइम स्टैंप कन्वर्ट करें

उद्देश्य सी में चर नामों से पहले "_" को क्यों रेखांकित करें

संभव डुप्लिकेट:
कोको उद्देश्य-सी वर्ग के काम में एक चर के सामने एक अंडरस्कोर कैसे होता है?

उद्देश्य सीआई में चर नामों से पहले एक अंडरस्कोर के साथ बहुत से कोड देख रहे हैं जैसे _someVariable

ऐसा क्यों है? आप कैसे प्रवेशकर्ता लिखते हैं यानी इस तरह के एक चर के लिए विधि प्राप्त करें और सेट करें

वेब के समाधान से एकत्रित समाधान "उद्देश्य सी में चर नामों से पहले "_" को क्यों रेखांकित करें"

अंडरस्कोर अक्सर यह दिखाते हैं कि चर आवृत्ति चर हैं । यह वास्तव में जरूरी नहीं है, क्योंकि इवर के पास उनके गुणों और उनके एक्सेसर्स के समान नाम हो सकते हैं।

उदाहरण:

@interface MyClass : NSObject { NSString *_myIVar; // can be omitted, see rest of text } // accessors, first one is getter, second one is setter - (NSString *) myIVar; // can be omitted, see rest of text - (void) setMyIVar: (NSString *) value; // can be omitted, see rest of text // other methods @property (nonatomic, copy) NSString *myIVar; @end 

अब, घोषित करने और myIVar और setMyIVar: अपने आप, आप संकलक ऐसा कर सकते हैं। नए संस्करणों में, आपको इंटरफ़ेस में myIVar को भी घोषित करने की आवश्यकता नहीं है। आप केवल संपत्ति की घोषणा करते हैं और संकलक को आपके लिए बाकी का संश्लेषण करने दें। .m फाइल में, आप करते हैं:

 @implementation MyClass @synthesize myIVar; // generates methods myIVar and setMyIVar: for you, // with proper code. // also generates the instance variable myIVar // etc... @end 

स्ट्रिंग को अंतिम रूप देना सुनिश्चित करें:

 - (void) dealloc { [myIVar release]; [super dealloc]; } 

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

आप गुणों के रूप में उपयोग कर सकते हैं

 myString = self.myIVar; 

या, किसी अन्य वर्ग से:

 theString = otherClass.myIVar; 

तथा

 otherClass.myIVar = @"Hello, world!"; 

MyClass में, यदि आप self. छोड़ देते self. , तुम नंगे चोटी मिलते हैं इसका आम तौर पर केवल आरंभिक और डेअलोक में उपयोग किया जाना चाहिए।

ऐसा मत करो

एकल प्रमुख अंडरस्कोर एक ऐप्पल आंतरिक कोडन सम्मेलन हैं। वे ऐसा करते हैं कि उनका नाम अपने आप के साथ टकराए नहीं। यदि आप अपने आईवर नामों पर एक उपसर्ग का उपयोग करना चाहते हैं, तो एक भी अंडरस्कोर का उपयोग करें।

यह आम तौर पर c ++ के लिए इस्तेमाल किया जाने वाला एक नामकरण सम्मेलन है जो कि उदाहरण के आवेश को परिभाषित करता है जो निजी है

जैसे एक कक्षा में हो सकता है आप हो सकता है

 private: int __x; public: int GetX() { return this.__x; } 

यह एक नामकरण सम्मेलन है, मुझे सी ++ में उपयोग करने के लिए मजबूर किया गया था हालांकि, मेरे शिक्षक ने हमें नामकरण सम्मेलन का नाम कभी नहीं बताया। लेकिन मुझे लगता है कि यह उपयोगी और पठनीय है विशेष रूप से जब आप जावा नामकरण सम्मेलनों का उपयोग नहीं कर रहे हैं।