Estoy tratando de cumplir con las directrices de Apple sobre cómo responder a las advertencias de memoria baja en mi aplicación. Las directrices dicen: "Al recibir (una advertencia de memoria baja), la aplicación debe liberar la mayor cantidad de memoria posible liberando los objetos que no necesita o borrando los cachés de memoria que puede recrear más tarde".iOS 5 + ARC - ¿asigna cero a la memoria libre de puntero?
La pregunta es, ¿cómo 'liberar' memoria, usando ARC?
Por ejemplo, supongamos que tengo una imagen en la jerarquía de vista de una vista que no está en la pantalla. En didReceiveMemoryWarning, actualmente lo elimino de la vista llamando a removeFromSuperview, pero todavía tengo un puntero al propio UIImage. ¿Debería también intentar liberar este recuerdo? ¿Cómo? ¿Al asignar nil al puntero?
TIA: John
Proporcione más información sobre el puntero. ¿Es un ivar, local en un método, global, propiedad? – zaph
Bueno, los que estoy pensando son variables de instancia UIImage *. – John
De acuerdo, creo que resolví mi problema 1) usando una referencia débil a la subvista y 2) asignando nil al puntero si la vista todavía estaba presente cuando se ejecutó didReceiveMemeoryWarning (que era cada vez que lo veía en el depurador) . Principalmente, creo que me acabo de dar cuenta de que no puedes evitar las advertencias de memoria todo el tiempo ... a veces son causadas por otras aplicaciones. Solo necesita manejarlos adecuadamente. Después de arreglar mi controlador de advertencia de memoria, solo recibí la advertencia una vez, en lugar de cada vez que activaba UIImagePickerController. Una gran mejora. – John