2012-02-27 19 views
21

¿Cómo rescato la creación de un objeto con ARC?¿Rescate de un objeto con arco?

Estoy buscando el equivalente de esta ARC (de memoria):

- (id)init 
{ 
    if ((self = [super init])) { 
     if (!condition) { 
      [self release]; 
      self = nil; 
      return self; 
     } 
    } 
    return self; 
} 

Respuesta

26

Sólo deshacerse de la llamada a release y se le multa. Ya que no tienes nada, ya no habrá más referencias al viejo yo, por lo que será desasignado.

- (id)init; 
{ 
    if ((self = [super init])) { 
     if (!condition) { 
      return nil; 
     } 
    } 
    return self; 
} 
+1

Esperaba que este fuera el caso, pero parecía demasiado simple. –

+3

No es necesario asignar 'nil' a self tampoco. Solo puede decir 'return nil' y ARC liberará el objeto. –

+0

¿Simplemente 'devolverá nada'? –