' initWithRequest:委托:'不推荐使用:首先在iOS 9.0中弃用 - 使用NSURLSession(请参阅NSURLSession.h)

时间:2016-04-01 07:35:50

标签: ios nsurlsession

我是目标C的新手,并使用iOS 9 Xcode 7.2并获得此警告"' initWithRequest:delegate:'不推荐使用:首先在iOS 9.0中弃用 - 使用NSURLSession(参见NSURLSession.h)"如何解决它。我的代码如下。

innerDirective

提前致谢。

2 个答案:

答案 0 :(得分:5)

不知道背景,不可能说。看起来它可能是NSURLConnection上类别的一部分,在这种情况下,您必须将它转换为NSURLSession上的类别中的实例方法(使其创建数据任务),然后将整个代码库转换为使用NSURLSession。

一些重大障碍:

  • 您不能将NSURLSession放入使用NSURLConnection的代码中,因为委托方法完全不同。
  • NSURLConnection使用每请求委托,而NSURLSession使用每会话委托。

结果是,这可能是对代码的主要更改,具体取决于您的委托方法的复杂程度。如果你实际上没有使用代表(或者他们没有做很多事情),那么这是一项微不足道的任务。

或者只是做

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"

// offending line of code goes here

#pragma clang diagnostic pop

并且不用担心。如果NSURLConnection很快就会消失,我会感到惊讶,考虑到有多少代码会破坏它。如果我错了,至少你会在路上捣乱这个问题一段时间。 : - )

答案 1 :(得分:3)

在iOS 9中不推荐使用

NSURLConnection。您可以使用自iOS 7以来存在的NSURLSession。

NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
        completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
        {
            // do something with the data 
        }];
[dataTask resume];

您还可以使用某些第三方库,例如Alamofire