Soy nuevo en el objetivo c y trato de entender cómo y cuándo se llama la liberación automática. Entiendo el caso de uso simple:¿El retorno de autorrelease es un error en el objetivo c?
- (void) foo {
Bar *b = [[[Bar alloc] init] autorelease];
[self doSomething:b];
}
¿Qué pasa con este caso siguiente - es esto un error, porque el objeto se dará a conocer inmediatamente después de salir del alcance de makeBar?
-(Bar*) makeBar
{
return [[[Bar alloc] init] autorelease];
}
¿Qué pasa si la persona que llama realiza una retención?
Bar *b = [[self makeBar] retain];
Gracias, -Eric
Este contenido de esta pregunta y las dos respuestas siguientes deben estar en la lista de lectura obligatoria para los nuevos en ObjC – ckhan