Digamos que tengo una fuerte propiedad de esta manera:¿Es seguro asignar una propiedad al resultado de un inicializador liberado automáticamente mientras se usa ARC?
@interface Foo
@property (strong, nonatomic) NSArray *myArray;
@end
Y, en mi inicializador, me puse miMatriz así:
myArray = [NSArray array];
Es esto seguro? ¿ARC se ocupará de retener adecuadamente myArray para mí?
La razón por la que pregunto es que tengo un proyecto donde myArray no está correctamente conservado en este escenario, y me sale un mal acceso a la memoria en el camino.
Pero, si uso
myArray = [[NSArray alloc] init];
entonces todo está bien.
Por "en mi inicializador" te refieres al método 'init [With ...]' de tu clase, ¿correcto? –
No está usando la propiedad en su asignación, está asignando directamente el respaldo ivar (lo cual es correcto en un inicializador). Pero no debería importar, ARC retendrá esta matriz de cualquier manera. (Dado que el ivar de respaldo debe ser también __strong) –