मुझे आश्चर्य है कि ऐप्पल क्यों उपयोग कर रहा है (कोरएनीमेशन में काफी भारी है, लेकिन कहीं और भी) स्थिरांक जिन्हें NSString * const
के रूप में घोषित किया गया है उदाहरण के लिए kCAGravityTop
नियमित enums के बजाय? इस मामले में सुरक्षा कैसे टाइप करें? जैसा कि मैं इसे समझता हूं, कोई भी किसी भी एनएसएसटींग को किसी भी कंपाइलर चेतावनियों के बिना इस स्थिरता की अपेक्षा करने वाली विधि को पास कर सकता है।एनम्स पर एनएसएसटींग स्थिरांक का उपयोग करने के कारण?
उत्तर
मुझे यकीन नहीं है, लेकिन मुझे लगता है कि उपयोगकर्ताओं को अपने स्वयं के एक्सटेंशन और सबक्लास को कुछ ऐप्पल सामानों में जोड़ने के साथ करना है। उस स्थिति में, आप केवल प्रयुक्त विधि को ओवरराइड कर सकते हैं और उस स्थिति को पकड़ सकते हैं जहां स्ट्रिंग "MyOwnValue" है और उसके बाद जो कुछ भी आप चाहते हैं उसे करें। ऐप्पल के enum को संशोधित करने से यह काफी आसान है, और यह आपको कुछ भी खराब करने से रोकता है।
यह ऐप्पल के संस्करण की आजादी के लिए आसान बनाने के लिए भी हो सकता है। Enums के साथ, यदि आप किसी भी तरह से अपने आदेश को पुनर्व्यवस्थित करते हैं तो यह उनके किसी भी मूल्य के लिए बहुत सी समस्याएं पैदा कर सकता है (किसी भी कारण से)। यदि enum का मान 1 < < 3 है जब इसे किसी फ़ाइल में सहेजा जाता है, तो ऐप्पल एक और enum जोड़ता है ताकि उसका मान अब 1 < < 4 हो, तो स्पष्ट रूप से गलत प्रोग्राम आपके प्रोग्राम से बाहर आ रहा है। वे सिर्फ एनम मूल्यों को चारों ओर जाने के बारे में सावधान क्यों नहीं होंगे, मुझे नहीं पता, लेकिन मुझे लगता है कि यह निश्चित रूप से संभव है कि उन्होंने एनएसएसटींग का उपयोग किया क्योंकि किसी भी संस्करण में इसका मूल्य या ऑर्डरिंग नहीं बदला जा सकता है।
मुझे संदेह है कि कारण किसी भी चीज़ से ऐतिहासिक या स्टाइलिस्ट अधिक है। इस तरह नेक्स्ट ढांचे ने इसे किया और यह कोको "शैली" बनाया। इस दृष्टिकोण के लाभ के रूप में, डीबगर में मान का निरीक्षण करने से सार्थक मूल्य (उदा। @ "CAGravityTop" या अर्थहीन int
की बजाय कुछ ऐसा हो सकता है)। चूंकि स्थिर तारों को संकलक द्वारा बुद्धिमानी से संभाला जाता है, तुलना स्ट्रिंग समानता के बजाय सूचक तुलना द्वारा की जा सकती है (बीबीएम के उत्तर देखें), इसलिए इस दृष्टिकोण के लिए नगण्य प्रदर्शन हिट है।
समेकित प्रकारों को अतिरिक्त प्रकार के भीतर अतिरिक्त प्रविष्टियों को जोड़ने के बिना बढ़ाया नहीं जा सकता है। इस प्रकार, गणितीय सामग्री होना असंभव है जो दोनों को गणनात्मक प्रकार के औपचारिक सदस्य के रूप में माना जाता है, फिर भी सामान्य संकलन के दौरान दिखाई नहीं दे रहा है।
उदाहरण के लिए कोरएनीमेशन ले लो। ऐसे मान हो सकते हैं जो आंतरिक रूप से उपयोग किए जाते हैं जो विभिन्न कारणों से सार्वजनिक एपीआई के माध्यम से समर्थित या उपलब्ध नहीं हैं; "कार्यान्वयन विस्तार" तुरंत दिमाग में आता है।
इसके अलावा, स्थिरांक के रूप में स्ट्रिंग एक्सटेंशन को सक्षम बनाता है क्योंकि एली का तात्पर्य है। डीबगिंग करते समय वे अधिक जानकारीपूर्ण होते हैं। "kCAGravityTop" कहता है, "4" से कहीं अधिक संकेतक है।
प्रदर्शन के संदर्भ में, तारों का उपयोग करने के लिए बहुत कम दंड है। स्टेटिक स्ट्रिंग्स, जिनमें से प्रत्येक स्ट्रिंग स्थिरता की हर बाहरी घोषणा के लिए आंतरिक समकक्ष वास्तव में संकलित होता है, जिसे कंपाइलर द्वारा कुशलता से संभाला जाता है और -इस एक्वाल टॉस्ट्रिंग: विधि का पहला परीक्षण पॉइंटर समानता है - बहुत तेज़। एक स्विच() के रूप में तेज़ नहीं है, लेकिन निरंतर द्वारा निहित कोड निष्पादन की परिमाण को देखते हुए, स्विच() और स्ट्रिंग तुलना के बीच कुछ चक्र अंतर अप्रासंगिक है।
एक और कारण मैं NSString के पक्ष में के बारे में सोचा है कि यह चारों ओर से पारित कर दिया जा सकता है जहाँ भी id
(जैसे userInfo
या के रूप में चाबियाँ शब्दकोश) स्वीकार किया जाता है, जबकि आदिम प्रकार (enums) आवरण किसी तरह इस
- 1. स्थैतिक एनएसएसटींग उपयोग बनाम इनलाइन एनएसएसटींग स्थिरांक
- 2. जावा एनम्स का प्रदर्शन?
- 3. जावा एनम्स का विस्तार
- 4. क्या एनएसएसटींग स्थिरांक कमजोर हो सकते हैं?
- 5. का उपयोग स्ट्रिंग स्थिरांक
- 6. IFrame का उपयोग न करने के कारण?
- 7. टाइपकिट का उपयोग न करने के कारण?
- 8. स्ट्रिंग स्थिरांक बनाम enum स्थिरांक का उपयोग क्यों करें?
- 9. सी #: एनम्स
- 10. सभी एनम्स
- 11. एनएसएआरएआरई में स्टोर एनम्स?
- 12. सार्वजनिक नेस्टेड एनम्स का कभी भी उपयोग न करें?
- 13. 'exampleof function() {}' का उपयोग करने के पीछे कारण?
- 14. हाइबरनेट में एनम का उपयोग करने के कारण अपडेट स्टेटमेंट
- 15. अभी भी सीवीएस का उपयोग करने के किसी भी कारण?
- 16. उपयोग करने के कारण (या नहीं) stdint
- 17. घुमावदार पथ पर एनएसएसटींग खींचने का तरीका?
- 18. संपत्ति कुंजी के लिए स्थिरांक का उपयोग करने का क्या मतलब है?
- 19. क्या डेटाबेस कारण के लिए किसी इंडेक्स पर auto_increment का उपयोग करने का कोई कारण नहीं है?
- 20. कैसे घोषित करने और NSString वैश्विक स्थिरांक
- 21. पठनीय SQLite डेटाबेस का उपयोग करने के कारण
- 22. क्या सभी वर्ण पढ़ने के दौरान InputStreamReader पर BufferedReader का उपयोग करने का कोई कारण है?
- 23. संयोजन एनम्स
- 24. डेटाबेस कनेक्शन पूलिंग का उपयोग न करने का कारण?
- 25. क्या System.Uri का उपयोग करने का कोई कारण है?
- 26. प्रोग्रामिंग में स्थिरांक का उपयोग क्यों करें?
- 27. जावा में स्कैला स्थिरांक का उपयोग करें
- 28. जावा स्थिरांक व्यवस्थित करने का आदर्श तरीका
- 29. कैसे स्थिरांक चार को स्थिरांक WCHAR * कन्वर्ट करने के लिए *
- 30. 'के' के साथ स्थिरांक शुरू करने का महत्व क्या है?
के लिए की आवश्यकता होगी है +1 अच्छी परिकल्पना – h4xxr
इसके अतिरिक्त मुझे लगता है कि संग्रह और अनारक्षित एक कारक है।अब कोर डेटा जैसे ढांचे के साथ अधिक व्यापक रूप से उपयोग किया जा रहा है, आपको लगता है कि अगर enums का उपयोग किया जाता है तो वहां बहुत सारे मुक्केबाजी और अनबॉक्सिंग होते हैं जिन्हें स्ट्रिंग्स का उपयोग करने के लिए केवल तभी बाहर किया जा सकता है, हालांकि कुछ विचार अभी भी स्ट्रिंग स्थिरांक के लिए बने रहते हैं - अनावश्यक बोझ "नलसाजी" कम हो गया है। – TheBasicMind