Un objeto selector
le permite llamar a un método que no conoce en tiempo de compilación. Solo necesita saber el nombre de un método como una cadena para llamarlo.
Cuando se conoce el nombre del método que está llamando en tiempo de compilación, usar selectores es contraproducente: el código se vuelve menos legible sin ninguna ventaja aparente. Cuando está escribiendo una biblioteca que necesita llamar a métodos en otro código que se compila por separado de la biblioteca, los selectores proporcionan una manera de desacoplar las dos partes del código.
Por ejemplo, si está escribiendo una clase de temporizador que puede devolverle la llamada cuando termina un intervalo de tiempo, su temporizador no conoce el nombre de la función que necesita llamar, por lo que no puede escribir algo como esto:
// We do not know if the function is called intervalHasExpired or something else
[target intervalHasExpired];
Pero si le da un selector a su temporizador, el temporizador podría devolverle la llamada.
[myTimer scheduleWithTarget:self andSelector:@selector(myCompletion)];
gracias por la respuesta rápida .. – QueueOverFlow