|
Hola.. Tengo un fichero .xib en el que he añadido un MKMapViewy y un Object (cubo naranja) que es una clase que cumple el protocolo MKMapViewDelegate, y he enlazado el objeto como delegate del Mapa. El problema que tengo es que cuando ejecuto la app, el objecto que hace de "delegado" es liberado de la memoria y cuando el mapa lo va usar me da un EXE-BAD-ACCESS. El "delegado" solo lo uso en el XIB por lo que mi app no lo libera :S Alguna idea de porque se libera? He aplicado una "solucion", en el metodo "awakeFromNib" del "delegado" hago un [self retain] y listo, pero no me parece muy elegante... |
|
Ya se lo que esta pasando. El problema es que los "delegate" no son retenidos, por lo que si mi objeto (que hace de delegado del MKMapView) no es retenido por otro objeto de mi app es liberado. La opción de que el objeto se retenga así mismo es una chapuza y crea un leak, así que me toca refactorizar un poco. |
|
Prueba a poner un breakpoint en Si, eso lo tengo controlado con Instruments, y ese es el problema, que no es mi app la que lo hace Gracias.
(10 Jun '11, 19:54)
German Laullon
|
|
Ese object que has añadido en el InterfaceBuilder supongo que estará conectado a un Outlet. Mira que al outlet tenga esta pinta: @property (retain)IBOutlet TuClase *obj; Si haces esto te tocará hacer un release de obj en el dealloc. si, ese es el problema, los "delegate" no son retenidos.
(13 Jun '11, 19:23)
German Laullon
No estoy muy seguro que cómo lo tienes montado todo pero me imagino que tienes: 1. ViewController en la que tienes la referencia de la mapview. En el mismo ViewController deberías tener el objeto (obj1) en el que delega el mapview. Y es en el view controller donde deberías tener retenido el obj1 ya que como bien dices el hacer mapView.delegate = obj1 no retiene al obj1. Entonces tu al poner el objeto que hace de delegado en el IB, este te lo crea pero el objeto se muere ya que no hay nadie que lo retenga.
(13 Jun '11, 19:55)
Aram
|