2010-05-28 24 views
23

HI, He creado mis aplicaciones para iPhone pero tengo un problema. Tengo un classViewController donde he implementado mi programa. Debo asignar 3 NSMutableArray, pero no quiero hacerlo en los métodos de Grapich. No hay un constructor como java para mi clase? Muchas gracias y lo siento por mi Inglés XPconstructor en el objetivo c

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

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

Respuesta

48

sí, hay un inicializador. Se llama -init, y que va un poco algo como esto:

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

Editar: No se olvide -dealloc, aunque'.

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

Como nota al margen, el uso de la lengua materna en el código es generalmente un mal movimiento, por lo general quiere meter a Inglés, sobre todo cuando se pide ayuda en línea y similares.

+4

'ARC prohíbe enviar mensaje explícito de 'dealloc'' mmmh ... –

+13

@Lohoris: Esta respuesta fue escrito antes de ARC era una cosa. Supongo que con ARC no necesita '-dealloc' en absoluto, pero es posible que desee comprobar los documentos para eso. –

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

Todos los inits deben llamar al inicializador designado de clases, solo debe tener una llamada super init. – Firo

+0

De acuerdo con @Firo, su '-init' debería verse así:' return [self initWithName: nil andAge: 0]; 'O con cualquier otro valor predeterminado apropiado. – Tricertops