【问题标题】:NSURLConnection initWithRequest is deprecatedNSURLConnection initWithRequest 已弃用
【发布时间】:2015-12-15 07:33:32
【问题描述】:

我在 iOS 中采用 Gmail API 并收到警告:

initWithRequest 已弃用

在下面一行:

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

该行位于 API 库的源文件 GTMHTTPFetcher.m 中。

什么是已弃用的-initWithRequest: 方法的替代品?

【问题讨论】:

  • 错误中没有提到更换吗? NSURLConnection 的官方文档(类参考)怎么说?
  • 报错如下:google-api-objective-client/Source/HTTPFetcher/GTMHTTPFetcher.m:459:46: 'initWithRequest:delegate:startImmediately:' is deprecated: first deprecated in iOS 9.0 - 使用 NSURLSession(参见 NSURLSession.h),官方文档没有提到使用什么来代替 initWithRequest @NicolasMiari
  • 我明白了……(稍微)坏消息,那么。看我的回答。
  • 请标记正确答案!谢谢

标签: ios gmail-api xcode7


【解决方案1】:

NSURLConnection 在 iOS 9 中已弃用。您可以改用自 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];

【讨论】:

    【解决方案2】:

    如果您不关心 completionHandler :这里有一个单线

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

    【讨论】:

      【解决方案3】:

      似乎整个 NSURLConnection API 在 iOS 9 中已被弃用。现有应用程序将继续工作,但新版本(链接到 iOS SDK)必须使用较新的 NSURLSession API。

      Ray Wenderlich 有一个很好的教程here。 当然,也可以查看official documentation

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-12
        • 1970-01-01
        • 2016-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多