¿Puedo usar un método de class como callback delegada?

En un método de método de class declaro lo siguiente:

UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Hello" message:@"World" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Done", nil]; 

Ahora, aunque el método que contiene es un método de class, el comstackdor no se queja del delegate:self . Ahora para ser el delegado tengo que implementar el método en el protocolo UIAlertViewDelegate .

¿Importa ahora si el método es un método de class o no, para que se pueda llamar cuando el usuario interactúa con mi AlertView?

Estoy haciendo esta pregunta, porque mi class no tiene ninguna variable de instancia, así que preferiría que contenga solo methods de class.

Primero, supongo que por methods "estáticos", te refieres a methods de class (declarados con + lugar de - ).

"El comstackdor no se queja" sobre Objective-C no siempre te dice mucho. Todo lo que realmente significa es que has convencido al comstackdor de que todo debería (o al less podría ) funcionar en time de ejecución.

Al final, si el object que proporciona como delegado responde a los posts correctos, al comstackdor no le importará que sea una class (y tampoco lo será el time de ejecución). En este caso, te estás proporcionando a ti self de un método de class. Es como si escribieras [MyClass class] .

Creo que probablemente sea cuestionable si esto es lo que debes hacer, pero probablemente esté fuera de los límites de tu pregunta.

Me gustaría compartir algunos de mis hallazgos:

  1. No importa si declaro al delegado como este delegate:self o delegate:[MyClass class]

  2. Sin embargo, sí importa cómo declaro el método:

    Esto funciona

     +(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ // Some Actions here } 

    Aunque la siguiente "syntax" es la statement en el protocolo UIAlertViewDelegate , no funciona :

     -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ // Some Actions here } 

Sí tu puedes !!! Una class también es un object.