最近iOS中同步和异步的区别

时间:2015-11-22 17:15:05

标签: ios asynchronous request synchronous

以前使用iOS有两种类型的请求:sendSynchronousRequest和sendAsynchronousRequest。但是,两者都在iOS9中被弃用。两种情况的推荐替代品:12完全相同:

[[NSURLSession sharedSession] dataTaskWithRequest:request
                                completionHandler:^(NSData *data,
                                        NSURLResponse *response,
                                        NSError *error) {
    //A piece of code after response completes.
}] resume];

那么,在最近的iOS中,这两者之间是否存在差异?为什么做出这样的决定?

1 个答案:

答案 0 :(得分:1)

作为一项规则,当Apple审核/升级API时,它们会淘汰可能阻塞线程并仅引入异步再现的同步方法。并且,在可能的情况下,这些新的异步方法通常也是可取消的。这两种NSURLConnection便利方法值得退休。

虽然我不记得Apple明确阐述了这一策略,但可以从许多框架(NSURLSession,Contacts框架,Photos框架等)中看到的进化逻辑推断出这一点。我确定他们之所以这样做是因为同步API很容易被误用,几乎会招致糟糕的编程模式(特别是阻塞主线程)。