NSURLConnection initWithRequest is deprecated

落爺英雄遲暮 提交于 2020-01-09 19:08:33

问题


I am adopting the Gmail API in iOS and I am getting the warning:

initWithRequest is deprecated

in the following line:

connection_ = [[connectionClass alloc] initWithRequest:request_ delegate:self startImmediately:NO];

The line is in the source file GTMHTTPFetcher.m of the API library.

What is the substitute for the deprecated -initWithRequest: method?


回答1:


It seems that the whole NSURLConnection API has been deprecated in iOS 9. Existing apps will continue to work, but new builds (linked against iOS SDK) must use the newer NSURLSession API.

Ray Wenderlich has a good tutorial here. Also, of course, check the official documentation.




回答2:


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];



回答3:


If you don't care about the completionHandler : here's an one liner.

[[[NSURLSession sharedSession] dataTaskWithRequest:request] resume];



回答4:


Use STHTTPRequest which uses NSURLConnection/NSURLSession.

For NSURLSession use STHTTPRequest2.

STHTTPRequest is best library as it has only 2 files and easy to use.



来源:https://stackoverflow.com/questions/32647138/nsurlconnection-initwithrequest-is-deprecated

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