问题
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