【问题标题】:dataTaskWithRequest VS sendAsynchronousRequest in iOS8/9 using Objective-c在 iOS8/9 中使用 Objective-c 的 dataTaskWithRequest VS sendAsynchronousRequest
【发布时间】:2016-05-09 20:33:05
【问题描述】:

有一个用 Objective-C 编写的面向 iOS8/9 的应用程序,使用 NSURLSession 在性能或稳定性更新代码方面有真正的优势

NSURLSession *session = [NSURLSession sharedSession];
        [[session dataTaskWithRequest:request
                    completionHandler:^(NSData *data,
                                        NSURLResponse *response,
                                        NSError *error) {

                        dispatch_sync(dispatch_get_main_queue(), ^{
                              //UPDATE UI

                        });

                    }] resume];

代替下面使用 NSURLConnection 的代码:

   [NSURLConnection sendAsynchronousRequest:request
                                       queue:[CMRequestManager connectionQueue]
                           completionHandler:^(NSURLResponse *response,
                                               NSData *data, NSError *connectionError)
     {


         dispatch_sync(dispatch_get_main_queue(), ^{

             //UPDATE UI

         });

     }];

【问题讨论】:

    标签: objective-c nsurlconnection nsurlsession


    【解决方案1】:

    如果您决定将来某个时候在 WatchKit 扩展程序或 tvOS 上运行代码,那么可以。否则,如果上面的 sn-p 代表您使用 API 的方式,那么我可能不会费心重写它。话虽如此,这在很大程度上是一个见仁见智的问题。

    【讨论】:

    • 在您看来,是否存在 NSURLRequest 比 NSURLSession “更好”的场景?
    • 你的意思是 NSURLConnection,我假设——NSURLRequest 被两个 API 使用。不,除了在不必重写所有委托方法的情况下保持与现有复杂代码的兼容性之外,别无他法。否则,NSURLSession 会做 NSURLConnection 所做的一切,还有更多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-29
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多