Pregunta addTarget: self versus addTarget: nil


Soy nuevo en el desarrollo de iOS. Estoy un poco confundido cuando estoy agregando un botón programáticamente. Cuando asignamos un objetivo a un botón como:

[button addTarget:self action:@selector(CallMe) forControlEvents:UIControlEventTouchUpInside];

y

[button addTarget:nil action:@selector(CallMe) forControlEvents:UIControlEventTouchUpInside];

Esta llamando CallMe Método en ambos casos. ¿Puede alguien explicarme cuál es la diferencia real entre estas dos líneas de código? Será más útil si alguien puede explicar el funcionamiento de addTarget Especialmente. Muchas gracias. La ayuda sería apropiada.


5
2018-06-06 06:39


origen


Respuestas:


Si se agrega uno mismo o cualquier otro objeto como destino para un mensaje de acción, el mensaje se enviará exactamente a este objeto.

Agregar nil como destino significa que el objetivo real se buscará en el tiempo de ejecución cuando se active el mensaje. La búsqueda comienza en el primer objeto respondedor y continúa desde allí a lo largo de la cadena de respondedores, es decir, probando el objeto devuelto por el método nextResponder hasta que se encuentre un objeto que implemente este método. Echa un vistazo a la guía de manejo de eventos para más información sobre el orden de búsqueda exacto.


6
2018-06-06 06:52



De acuerdo con Apple documentación,

El objeto de destino es el parámetro enviar al método addTarget, es decir, el objeto al que se envía el mensaje de acción. Si esto es nulo, se busca en la cadena de respondedores un objeto que esté dispuesto a responder al mensaje de acción.

Si desea eliminar la acción, puede pasar nil para eliminar todos los objetivos emparejados con la acción y los eventos de control especificados en el método de eliminación de destino,

[button removeTarget:nil action:@selector(CallMe) forControlEvents:UIControlEventTouchUpInside];

1
2018-06-06 06:48



Aquí está la descripción del parámetro Destino de la documentación de Apple para la clase UIControl:

objetivo El objeto de destino, es decir, el objeto al que se envía el mensaje de acción. Si esto es nulo, se busca en la cadena de respondedores un objeto que esté dispuesto a responder al mensaje de acción.


1
2018-06-06 06:53