#ios #objective-c #nsurlsession
#iOS #objective-c #nsurlsession
Вопрос:
У меня есть следующий код для NSURLSession
NSURL * url = [NSURL URLWithString:urlString];
HomeViewController* hvc= [self.storyboard instantiateViewControllerWithIdentifier:@"HomeViewController"];
NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: defaultConfigObject delegate:hvc delegateQueue: [NSOperationQueue mainQueue]];
NSURLSessionDataTask * dataTask = [defaultSession dataTaskWithURL:url ];
[dataTask setAccessibilityLabel:@"UserProfiling"];
[dataTask resume];
Компилятор показывает предупреждение при этом утверждении:
NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: defaultConfigObject delegate:hvc delegateQueue: [NSOperationQueue mainQueue]];
и предупреждение :
Sending 'HomeViewController *' to parameter of incompatible type 'id<NSURLSessionDelegate>'
Как мне удалить это предупреждение?
Я подтвердил делегатам, написав:
@interface ProfileTabView : UIViewController <NSURLSessionDataDelegate, NSURLSessionDelegate, NSURLSessionTaskDelegate>
{
}
По сути, я вызываю NSURLSessionDataTask, а делегаты находятся в другом ViewController, как вы видите выше.
Комментарии:
1. HomeViewController — это не тот класс, к которому вы добавили соответствие протоколу (ProfileTabView).
2. Хороший улов, спасибо. Я был сбит с толку, потому что делегаты присутствовали в другом ViewController.
Ответ №1:
(Из комментария, отвечаю для потомков.)
HomeViewController — это не тот класс, к которому вы добавили соответствие протоколу (ProfileTabView).