objective c - Establecer delegate a nil en dealloc
objective-c xcode (1)
Es un movimiento de programación defensivo. Está borrando la referencia al objeto delegado en caso de que otra cosa en su objeto intente acceder al delegado después de que le haya dicho que ya terminó. Como parte de su dealloc, puede tener un método o hacer algo que active una notificación de KVO que haga una llamada al delegado. Entonces establecer la referencia del delegado a nil evita que eso suceda. Si sucediera, podrías terminar con algunos accidentes extraños que son divertidos de reproducir y arreglar.
En Objective-C, entiendo que si un objeto se establece a sí mismo como el delegado de otro objeto, debe establecer el delegado de ese objeto en nil
en su dealloc
para evitar recibir mensajes una vez que se haya ido.
Sin embargo, cuando se usa Accessorizer (una utilidad de Xcode), el código auxiliar que genera también pone un delegate = nil
en el dealloc
de la clase que tiene la variable delegate instance. Cuál es el propósito de eso?