我需要编写一个方法来完成一些异步的东西(HTTP GET请求),并在完成时调用一些以回调形式提供的方法。有关使用回调创建方法的最佳做法
在Objective-C中做这些事情的适当方法是什么?我是否应该为成功和错误处理提供一个完成回调,还是应该将它们作为单独的参数传递?
另外,我应该如何命名这种方法?这里的最佳实践是什么?
我需要编写一个方法来完成一些异步的东西(HTTP GET请求),并在完成时调用一些以回调形式提供的方法。有关使用回调创建方法的最佳做法
在Objective-C中做这些事情的适当方法是什么?我是否应该为成功和错误处理提供一个完成回调,还是应该将它们作为单独的参数传递?
另外,我应该如何命名这种方法?这里的最佳实践是什么?
设置委托并在异步过程完成时在委托中调用完成方法是一种方法。
在过去的几年中,苹果和更大的iOS/Mac社区一直在摆脱这种设计模式。相反,你更有可能找到一个采用完成块的方法。该完成块可能具有成功参数,数据参数和错误参数。
查看现在不推荐使用的NSURLConnection类中的sendAsynchronousRequest:queue:completionHandler:
方法或NSURLSession中最近使用的dataTaskWithURL:completionHandler:
方法。两者都有一个完成处理程序,当异步请求完成处理时会被调用。
我改变了我的习惯,更有可能在新设计中使用完成块而不是代理和回调。
我不认为这是任何人都从协议委托模式转移的情况。这完全取决于两个物体之间的关系。一如既往,为工作使用正确的工具。 – nhgrif
通常您可以使用任一种方法。在块存在之前,你(显然)不能使用它们。现在,它们是一种选择,在可以使用的情况下,块有一些优点。当然,仍然有代理模式是更好的解决方案的情况。 –
这是一个很好的话题,但可能对[programmers.se]更好。 – rickster