2010-05-28 10 views
23

HI, में कन्स्ट्रक्टर मैंने अपने आईफोन ऐप्स बनाए हैं लेकिन मुझे कोई समस्या है। मेरे पास classViewController है जहां मैंने अपना प्रोग्राम लागू किया है। मुझे 3 NSMutableArray आवंटित करना होगा, लेकिन मैं इसे grapich विधियों में नहीं करना चाहता हूं। मेरी कक्षा के लिए जावा जैसे निर्माता नहीं हैं? धन्यवाद इतना और खेद मेरी अंग्रेजी XPउद्देश्य सी

// I want put it in a method like constructor java 

arrayPosition = [[NSMutableArray alloc] init]; 
currentPositionName = [NSString stringWithFormat:@"noPosition"]; 

उत्तर

48

हाँ के लिए, एक प्रारंभकर्ता है। यह -init कहा जाता है, और यह इस तरह एक छोटे से कुछ है:

- (id) init { 
    self = [super init]; 
    if (self != nil) { 
    // initializations go here. 
    } 
    return self; 
} 

संपादित करें:-dealloc मत भूलना, यद्यपि '।

- (void)dealloc { 
    // release owned objects here 
    [super dealloc]; // pretty important. 
} 

एक तरफ ध्यान दें, कोड में मूल भाषा का उपयोग कर के रूप में आम तौर पर एक बुरा कदम है, आप आमतौर पर विशेष रूप से जब ऑनलाइन मदद के लिए पूछ और जैसे अंग्रेजी से चिपके करना चाहते हैं,।

+4

'एआरसी स्पष्ट संदेश 'dealloc'' Mmmh के भेजने की मनाही है ... –

+13

@Lohoris: इससे पहले कि एआरसी एक बात थी यह प्रतिक्रिया लिखा गया था। मैं अनुमान लगा रहा हूं कि एआरसी के साथ आपको '-dealloc' की आवश्यकता नहीं है, लेकिन आप इसके लिए दस्तावेज़ों को देखना चाहेंगे। –

5
/****************************************************************/ 
- (id) init 
{ 
    self = [super init]; 
    if (self) { 
    // All initializations you need 
    } 
    return self; 
} 
/******************** Another Constructor ********************************************/ 
- (id) initWithName: (NSString*) Name 
{ 
    self = [super init]; 
    if (self) { 
    // All initializations, for example: 
    _Name = Name; 
    } 
    return self; 
} 
/*************************** Another Constructor *************************************/ 
- (id) initWithName:(NSString*) Name AndAge: (int) Age 
{ 
    self = [super init]; 
    if (self) { 
    // All initializations, for example: 
    _Name = Name; 
    _Age = Age; 
    } 
    return self; 
} 
+2

सभी इनसाइटों को कक्षा नामित प्रारंभकर्ता को कॉल करना चाहिए, आपके पास केवल एक सुपर इनिट कॉल होना चाहिए। – Firo

+0

@ फ़िरो के साथ सहमत हैं, आपका '-इनिट' इस तरह दिखना चाहिए: 'वापसी [स्वयं initWithName: nil औरAge: 0];' या किसी अन्य उचित डिफ़ॉल्ट मान के साथ। – Tricertops