Wypróbowałem aplikację, aby przetestować komunikację bluetooth. Jest to prosta aplikacja, która po prostu wysyła wiadomość w formie tekstowej z jednego iDevice do drugiego. Oryginalnie ta aplikacja miała około 6 ostrzeżeń, ale naprawiłem wszystkie oprócz dwóch. Są takie same, ale mają do czynienia z różnymi delegatami. Jeden jest dla GKPeerPickerControllerDelegate, a drugi dla GKSessionDelegate. Wypowiedz błąd Picker jest dla GKPeerPickerController nazwie kompletacji, po wpisaniu (pełniejszy przykład do naśladowania):Trochę denerwujących ostrzeżeń, które nadal pozwalają aplikacji działać, ale chcą usunąć
picker.delegate = self;
kompilator mówi:
Passing '* const ___ silny' do parametru niezgodnego typu ' ID'.
Dla nazwie sesji GKSession, wpisując
session.delegate = self;
sprawia kompilator powiedzieć:
Wysyłanie '* const ___ silny' do parametru niezgodnego typu 'id'.
Te tylko pop w przycisku, aby wysłać i peerPickerController. Wiem, że te ostrzeżenia nie przeszkadzają w funkcjonowaniu aplikacji, ale chciałbym ją całkowicie zaktualizować w Xcode 4.2. Ta aplikacja została pierwotnie napisana dla Xcode, gdy system iOS 3.0 był nowy. Tak, jestem trochę wybredny, jeśli chodzi o pisanie lub ćwiczenie kodu, nie może on zawierać żadnych błędów/ostrzeżeń, kiedy tylko jest to możliwe.
Są to bloki kodu, gdzie występują ostrzeżenie:
-(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];
}
EDIT:
Nagłówek ma to:
@interface BTViewController : UIViewController{
GKSession *currentSession;
IBOutlet UITextField *txtMessage;
IBOutlet UIButton *connect;
IBOutlet UIButton *disconnect;
GKPeerPickerController *picker;
}
+1 dla próbuje usunąć każdą ostatnią ** Uwaga **! –
Dzięki, zawsze staram się upewnić, że to, co piszę, nie ma problemów. Programowanie dla iOS jest inne niż Windows, co też robię w pracy. –
kod, który kompiluje się czysto z '-Wall' zawsze ma mniej problemów niż w innych przypadkach. –