2009-03-02 12 views
18

मैं कक्षा में कुछ तरीकों को लिखना चाहता हूं ताकि अन्य कक्षाएं [instance methodName:Parameter] का उपयोग करके इन विधियों को कॉल कर सकें।आईफोन पर एनएसओब्जेक्ट के सबक्लास को कैसे प्रारंभ करें?

यदि कक्षा UIViewController का उप-वर्ग है, तो मैं इसे आरंभ करने के लिए initWithNibName का उपयोग कर सकता हूं। लेकिन मैं NSObject के सबक्लास में विधियों को लिखना चाहता हूं, मैं इसे कैसे प्रारंभ कर सकता हूं?

उत्तर

-2

मैं इस काम कर सकते हैं लगता है:

TheClass *newObject = [[TheClass alloc] init]; 
//do something here 
[newObject release];
+1

यह केवल "newObject" ऑब्जेक्ट को TheClass क्लास के रूप में प्रारंभ कर रहा है। यदि TheClass "- (id) init" [super init] "और" स्वयं को वापस "में लागू नहीं करता है, तो आपका प्रारंभिक रूप से विफल हो जाएगा। – Klompengard

57

iphony सही है, लेकिन वह या वह कहते हैं कि यह नहीं है कि आप init विधि अपने आप को लिखने के लिए की जरूरत है। आपका init विधि आम तौर पर कुछ इस तरह दिखना चाहिए:

- (id) init 
    { 
    if (self = [super init]) 
     { 
     myMember1 = 0; // do your own initialisation here 
     myMember2 = 0; 
     } 
    return self; 
    } 

हालांकि apple documentation कहते

init विधि NSObject वर्ग में परिभाषित नहीं प्रारंभ करता है, यह बस आत्म लौटाता है।

और एक बस

- (id) init 
    { 
    myMember1 = 0; // do your own initialisation here 
    myMember2 = 0; 
    return self; 
    } 

लिखने के लिए इस गलत है और परीक्षा जा सकती है, का पालन नहीं कर क्या स्पष्ट रूप से दस्तावेज में कहा गया है:

इस (init) विधि के एक कस्टम कार्यान्वयन में , आपको सुपर नामित प्रारंभकर्ता को फिर से शुरू करना होगा और फिर नई ऑब्जेक्ट को प्रारंभ करना और वापस करना होगा।

आवश्यक है। नहीं, चाहिए, चाहिए, आदि,

आपको यह नहीं मानना ​​चाहिए कि एनएसओब्जेक्ट की init भविष्य में नहीं बदली है; न ही सुपरक्लास जिसमें से आपकी कस्टम क्लास प्राप्त होती है।

+0

[सुपर init] आवश्यक है? क्योंकि NSObject की init विधि का दस्तावेज़ीकरण अन्यथा कहता है। – santhu

+0

किसी को सुपर इनिट कभी नहीं छोड़ना चाहिए! भले ही यह कुछ भी नहीं करता है। दस्तावेज़ स्पष्ट रूप से कहते हैं: "इस विधि के एक कस्टम कार्यान्वयन में, आपको सुपर के नामित प्रारंभकर्ता को आमंत्रित करना होगा और फिर नई वस्तु को प्रारंभ करना और वापस करना होगा।" मैंने जवाब संपादित कर लिया है। – manicaesar

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