Supongamos que tengo una función como esta:Administración de memoria Objective-C: ¿mejores prácticas al devolver objetos?
- (NSSet *) someFunction {
//code...
return [[[NSSet alloc] initWithObjets:obj1, obj2, nil] autorelease];
}
Cuando llamo a esta función, haga lo que necesito hacer retener/liberar el valor de retorno? Supongo que sí.
Sin embargo, ¿qué pasa si no lo hago autorelease, por lo algunaFuncion ahora se ve así:
- (NSSet *) someFunction {
//code...
return [[NSSet alloc] initWithObjets:obj1, obj2, nil];
}
En este caso, estoy asumiendo que necesito para liberar pero no retener el valor de retorno.
Mi pregunta es, ¿cuál es la mejor práctica sugerida para este tipo de situaciones? ¿Se recomienda una u otra versión de alguna función? Gracias.
es alloc, no init, lo que significa que usted es el propietario de la referencia Creo – cobbal
Sí, está en lo correcto. Editando la respuesta original para reflejar eso (por el bien de la posteridad). –
Veo tantas personas que se refieren a esa guía de programación. Es muy, muy aburrido y seco para leer. Es necesario que haya otra guía para ello –