2012-09-14 16 views
5

क्या NSObject subclassing करते समय कस्टम प्रारंभिकरण विधि में self = [super init]; लिखना समझ में आता है? मुझे पता है कि किसी भी अन्य वर्ग को उप-वर्गीकरण करना आवश्यक है, क्योंकि इसमें कस्टम प्रारंभिकरण हो सकता है, लेकिन क्या एनएसओब्जेक्ट इनिट विधि कुछ भी करती है?क्या NSObject init विधि कुछ भी करता है?

+4

इसमें प्रवेश करने की एक अच्छी आदत है। – Kyle

उत्तर

9

कोई ऑब्जेक्ट प्रारंभ होने तक उपयोग करने के लिए तैयार नहीं है। initNSObject कक्षा में परिभाषित विधि कोई प्रारंभिकता नहीं है; यह बस आत्म लौटाता है।

तो मूल रूप से आपको [super init] को NSObject सबक्लास में कॉल करने की आवश्यकता नहीं है, लेकिन मैं अभी भी इसकी अनुशंसा करता हूं। यह बस एक बेहतर डिजाइन है। यदि आप सुपरक्लास बदलते हैं तो यह अभी भी काम करेगा।

स्रोत: NSObject Class Reference

+5

+1 "मैं अभी भी इसकी अनुशंसा करता हूं" - एनएसओब्जेक्ट कार्यान्वयन बदल सकता है, आप अपनी कक्षा के सुपरक्लास इत्यादि को बदल सकते हैं। यह आपके वर्ग के काम को अपने सुपरक्लास के व्यवहार के बारे में जानकारी देने के लिए नहीं है। – Tim

+0

धन्यवाद, यह समझ में आता है। :) –

+4

नहीं, वास्तव में, आपका कोड ** गलत ** है यदि आप 'self = [super init ...]; 'नहीं हैं। इससे कोई फर्क नहीं पड़ता कि 'एनएसओब्जेक्ट' का कार्यान्वयन क्या करता है; नाजुकता को कम करने के लिए लगातार हर जगह पैटर्न का उपयोग करें और क्योंकि दस्तावेज सही पैटर्न के बाद अधिक रखरखाव करने वाले ऐप्स की ओर जाता है। – bbum

संबंधित मुद्दे