Probé una aplicación para probar la comunicación bluetooth. Es una aplicación simple que simplemente envía un mensaje en forma de texto de un iDevice a otro. Originalmente, esta aplicación tenía alrededor de 6 advertencias pero arreglé todas menos dos. Son lo mismo, pero tienen que ver con diferentes delegados. Una es para GKPeerPickerControllerDelegate y la otra para GKSessionDelegate. Digamos que el error Selector es para el selector llamado GKPeerPickerController, cuando se escribe (ejemplo más completo a seguir):Un poco de advertencias molestas que todavía permiten que la aplicación funcione, pero me gustaría eliminar
picker.delegate = self;
el compilador dice:
Pasando '* const ___ fuerte' para el parámetro de tipo incompatible ' carné de identidad'.
Para el GKSession de sesión llamada, escribir
session.delegate = self;
hace que el compilador dicen:
Envío de 'const * ___ fuerte' para el parámetro de tipo incompatible 'id'.
Estos solo aparecen en el botón para enviar y peerPickerController. Sé que estas advertencias no impiden la capacidad de la aplicación para funcionar, pero me gustaría actualizar esto completamente para Xcode 4.2. Esta aplicación fue escrita originalmente para Xcode cuando iOS 3.0 era nueva. Sí, soy un poco exigente cuando se trata de escribir o practicar código, no debe contener ningún error/advertencia siempre que sea posible.
Estos son los bloques de código, donde ocurre la advertencia:
-(IBAction)btnConnect:(id)sender{
picker = [[GKPeerPickerController alloc] init];
picker.delegate = self; //Warning here
picker.connectionTypesMask = GKPeerPickerConnectionTypeNearby;
[connect setHidden:YES];
[disconnect setHidden:NO];
[picker show];
}
-(void)peerPickerController:(GKPeerPickerController *)PCpicker didConnectPeer:(NSString *)peerID toSession:(GKSession *)session{
self.currentSession = session;
session.delegate = self; //Warning here
[session setDataReceiveHandler:self withContext:nil];
PCpicker.delegate = nil;
[PCpicker dismiss];
}
Editar:
La cabecera tiene esto:
@interface BTViewController : UIViewController{
GKSession *currentSession;
IBOutlet UITextField *txtMessage;
IBOutlet UIButton *connect;
IBOutlet UIButton *disconnect;
GKPeerPickerController *picker;
}
+1 para tratar de eliminar hasta la última advertencia ** **! –
Gracias, siempre trato de asegurarme de que lo que escribo no tenga problemas. La programación para iOS es diferente de Windows, lo cual también hago para el trabajo. –
código que compila limpio con '-Wall' siempre tiene menos problemas que de lo contrario. –