Я попробовал приложение для проверки связи по Bluetooth. Это простое приложение, которое просто отправляет сообщение в текстовой форме с одного iDevice на другое. Первоначально в этом приложении было около 6 предупреждений, но я исправил все, кроме двух. Они одинаковы, но работают с разными делегатами. Один предназначен для GKPeerPickerControllerDelegate, а другой - для GKSessionDelegate.Скажем, ошибка Picker возникает для GKPeerPickerController с именем picker, когда вы набираете (более полный пример):
picker.delegate = self;
компилятор говорит:
Передача '* const ___ strong' параметру несовместимого типа 'id'.
Для именованного сеанса GKSession ввод
session.delegate = self;
заставляет компилятор сказать:
Отправка '* const ___ strong' параметру несовместимого типа 'id'.
Это только кнопка для отправки и peerPickerController. Я знаю, что эти предупреждения не препятствуют работе приложения, но я хотел бы полностью обновить это для Xcode 4.2. Это приложение было изначально написано для Xcode еще тогда, когда появилась iOS 3.0. Да, я немного придирчив, когда дело касается написания или отработки кода, он не должен содержать никаких ошибок / предупреждений, когда это возможно.
Это блоки кода, в которых возникает предупреждение:
-(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];
}
Изменить:
Заголовок имеет следующий вид:
@interface BTViewController : UIViewController{
GKSession *currentSession;
IBOutlet UITextField *txtMessage;
IBOutlet UIButton *connect;
IBOutlet UIButton *disconnect;
GKPeerPickerController *picker;
}