new operator - new on objective-c -


मैं यह करना चाहता हूं:

  [[क्लास ए नया] addObject: [[क्लास नया] addObject: [क्लास ए नया]]];  

लेकिन कंपाइलर देता है:

  "त्रुटि: शून्य अभिव्यक्ति का अमान्य उपयोग"  

क्या कोई तरीका है इसे करने के लिए? जैसे जावा में:

  क्लास ए = न्यू क्लास (नया क्लास (नया क्लास ए ()));  

असली समस्या यह है कि - [वर्ग ए addObject:] बहुत संभावना में रिक्त प्रकार का शून्य है, इसलिए आप उस अभिव्यक्ति को बाहरी -addObject : कॉल के तर्क के रूप में घोंसला नहीं कर सकते। उदाहरण के लिए, दस्तावेज देखें - विधि हस्ताक्षर - (शून्य) addObject: (id) anObject है। यदि आप किसी अन्य भाषा में विशेष रूप से जावा में अलग-अलग व्यवहार करने के लिए उपयोग किया जाता है, तो यह आपको गार्ड से बचा सकता है यह भी ध्यान रखें कि -removeObject: रिटर्न शून्य , उस ऑब्जेक्ट को नहीं हटाया गया था।

इसके अलावा, हर कोई यह बात गुम है कि + नए को ओवरराइड होने तक विरासत में मिला है - देखें। हालांकि, + new का उपयोग "प्रचलित से बाहर" है, और + alloc / -init ... पसंदीदा है एक कारण यह है कि जब से + new को -init को कॉल करता है, तो आपको एक-दूसरे को ... प्रत्येक कक्षा में मिलान करने के लिए ... नया वर्ग बनाना चाहिए। उस बिंदु तक, आपको गैर-समस्या को हल करने के लिए बहुत अधिक अनावश्यक कोड प्राप्त होता है मैं व्यक्तिगत रूप से केवल + नया बहुत कम समय का उपयोग करता हूं, और केवल जब मुझे पता है कि मैं केवल -init का उपयोग कर रहा हूं।

चूंकि आप जावा की पृष्ठभूमि, यदि आप उत्सुक हैं कि उद्देश्य सी क्यों सभी तरह जावा, सी ++, आदि के बजाय alloc / init का उपयोग करता है।


Comments

Popular posts from this blog

c++ - Linux and clipboard -

What is expire header and how to achive them in ASP.NET and PHP? -

sql server - How can I determine which of my SQL 2005 statistics are unused? -