Tips and Techniques for Framework Developers पर एप्पल के प्रलेखन के माध्यम से पढ़ना, मैं नामित initializers के बारे में इस बयान में आए:एक कक्षा में कभी भी एक से अधिक नामित प्रारंभकर्ता होगा?
एक नामित प्रारंभकर्ता एक वर्ग है कि सुपर क्लास के एक
init
विधि invokes का एक init विधि है। (अन्य प्रारंभकर्ताinit
कक्षा द्वारा परिभाषित विधियों का आह्वान करते हैं।) प्रत्येक सार्वजनिक वर्ग में एक या अधिक नामित प्रारंभकर्ता होना चाहिए।
(जोर जोड़ा।)
मेरी समझ-और वास्तव में, शब्द के बहुत उपयोग "नामित" -एक वर्ग के आधार पर केवल एक ही नामित प्रारंभकर्ता होना चाहिए। लेकिन दस्तावेज़ीकरण के अनुसार, कई नामित प्रारंभकर्ता स्वीकार्य हैं।
मान लें कि आपके पास दो (या अधिक) नामित प्रारंभिक प्रारंभकर्ता हैं, उनकी भूमिका उचित ऑब्जेक्ट प्रारंभिकरण की गारंटी के लिए सुपरक्लास के नामित प्रारंभकर्ता को कॉल करना है। लेकिन यदि दोनों नामित प्रारंभकर्ता एक ही सुपरक्लास के नामित प्रारंभकर्ता को बुला रहे हैं, तो पहले स्थान पर एक से अधिक की आवश्यकता क्यों थी? क्या कक्षा को अन्य सभी init
एकवचन नामित प्रारंभकर्ता के तरीकों को फ़नल करने के लिए पुन: सक्रिय नहीं किया जाना चाहिए?
मैं थोड़ा सा उलझन में हूं कि केस या डिज़ाइन पैटर्न किस नाम का उपयोग कई नामित प्रारंभकर्ताओं के लिए करेगा?
कभी-कभी प्रत्येक प्रारंभकर्ता के पैरामीटर एक ही "नामित" प्रारंभकर्ता में फ़नल करने के लिए बहुत अलग होते हैं। अनुशंसा यह है कि आपके पास कम से कम पैरामीटर वाले प्रारंभकर्ता हैं जो अधिकांश पैरामीटर वाले एकल प्रारंभकर्ता को कॉल करते हैं, लेकिन यह हमेशा समझ में नहीं आता है। – spstanley
यहां तक कि उस मामले में जहां आपकी कक्षा में व्यापक रूप से विभिन्न पैरामीटर के साथ प्रारंभकर्ता हो सकते हैं, क्या सुपरक्लास के नामित प्रारंभकर्ता को कॉल करने के लिए केवल एक प्रारंभकर्ता ही जिम्मेदार नहीं होना चाहिए? क्या कोई अन्य अपने पैरामीटर को समायोजित नहीं करना चाहिए और इसके परिणामस्वरूप आंतरिक रूप से नामित प्रारंभकर्ता को कॉल करना चाहिए? स्पष्टीकरण के लिए – LucasTizma