Establecer delegates en "self" de un método de class

Digamos que quiero llamar a un UIActionSheet desde un método de class auxiliar. Quiero que la class auxiliar (no el object) sea la delegada de esta hoja de acciones. Entonces me estoy pasando al delegado.

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"MyTitle" delegate:self cancelButtonTitle:nil destructiveButtonTitle:@"Delete" otherButtonTitles:nil]; 

Mi class de ayudante implementa los methods de delegado como methods de class y todo funciona bien. Pero, recibo una advertencia del comstackdor que dice: puntero Incompatible, enviando Clase cuando se espera ID. También probé [auto class] y obtuve la misma advertencia.

¿Cómo puedo evitar esta advertencia?

Simplemente configure el delegado en [self self] .

Puede deshacerse de la advertencia emitiendo su identidad.

 [[UIActionSheet alloc] initWithTitle:@"MyTitle" delegate:(id<UIActionSheetDelegate>)self cancelButtonTitle:nil destructiveButtonTitle:@"Delete" otherButtonTitles:nil]; 

Esto le dirá al comstackdor que trate el valor como un id que se ajuste al protocolo UIActionSheetDelegate.

No le avisará del todo hasta que pase un puntero de object al método. Espera un id , donde le das Class que es una Class typedef struct objc_class *Class; .

Lo soluciono agregando <UIActionSheetDelegate> en la statement de la interfaz de file class .h