2010-05-28 24 views
23

HI, iPhone uygulamalarımı oluşturdum ancak bir sorunum var. Programımı uyguladığım bir classViewController var. 'u ayırmalıyım ama bunu grapich yöntemlerinde yapmak istemiyorum. Sınıfım için java gibi bir kurucu yok mu? ingilizcem XPyapıcı nesnel c

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

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

cevap

48

Evet için çok ve üzgün sayesinde bir başlatıcı vardır. Bu -init denir ve bu gibi küçük bir şey gider:

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

Düzenleme: tho -dealloc unutma'. kodunda ana dillerini kullanarak bir yan not olarak

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

genellikle özellikle çevrimiçi yardım isteme ve benzeri zaman, İngilizce sopa istiyorum, genellikle kötü bir harekettir.

+4

'ARC 'dealloc'' mmmh ait göndermek açık mesaj yasaklar ... –

+13

@Lohoris: ARC bir şeydi önce Bu cevap yazılmıştır. Ben ARC ile -dealloc 'gerek yok sanırım, ama bunun için dokümanlar kontrol etmek isteyebilirsiniz. –

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

Tüm inisler, başlatılmış başlatıcıları çağırmalıdır, sadece bir süper init çağrınız olmalıdır. – Firo

+0

@Firo ile katılıyorum, sizin '-init 'şu şekilde görünmelidir:' return [self initWithName: nil veAge: 0]; 'Veya diğer uygun varsayılan değerlerle. – Tricertops