Как мне избавиться от этого предупреждения в iOS 7 Objective-C?

#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).