'initWithRequest:delegate:' is deprecated: first deprecated in iOS 9.0 - use NSURLSession(see NSURLSession.h)

天涯浪子 提交于 2019-12-06 08:59:29

Without knowing the context, it is impossible to say. This looks like it might be part of a category on NSURLConnection, in which case you'll have to turn it into an instance method in a category on NSURLSession (make it create a data task) and then convert your whole code base over to use NSURLSession.

A couple of big hurdles:

  • You can't just drop NSURLSession into code that uses NSURLConnection, because the delegate methods are entirely different.
  • NSURLConnection uses a per-request delegate, whereas NSURLSession uses a per-session delegate.

The result is that this is potentially a major change to your code, depending on how complicated your delegate methods are. If you aren't actually using delegates (or aren't doing much with them), then it is a trivial task.

Or just do

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

// offending line of code goes here

#pragma clang diagnostic pop

and don't worry about it. I'd be surprised if NSURLConnection went away any time soon, given how much code would break if it ever did. And if I'm wrong, at least you will have punted the problem down the road for a while. :-)

NSURLConnection is deprecated in iOS 9. You can use NSURLSession instead which exists since iOS 7.

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

You also can use some 3rd party library like Alamofire.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!