2

我有一个模型Model,它通过 JSON API 加载一些东西,然后我以某种方式在 UI 中显示它。假设一次只有一个current实例(根据时间从服务器获取),所以我有一个看起来像这样的方法调用[Model current]

问题是我需要在数据加载时做一些事情,这导致我有两种可能的解决方案:

  1. 委派 - 就像[Model currentWithDelegate:self]我将在其上实现协议的地方self会有回调
  2. 块 -[Model currentWithSuccess:^(id response) { ... } error:^(NSError *error) { ... }]

由于我是一名 JavaScript/Ruby 开发人员,我很习惯这样做2.,但考虑到在 iOS 上使用委托的频率,我在想这是否也是正确的方法?

在 iOS 上处理异步的事实标准或最佳实践是什么?还有其他更好的方法吗?

4

2 回答 2

2
于 2013-07-17T17:51:02.587 回答
1

由于不同的原因,两者都很有用。

如果您希望能够在对象分配旁边包含回调代码,并且当您只有一个或两个不同的回调时,块可能很有用。

当您希望让不同的对象处理回调,或者让一个对象处理各种其他对象的回调时,委托是很好的(当然,您仍然可以使用块来执行此操作,但使用委托模式更自然)。委托也很好,因为您有一个明确定义的协议,如果您有许多不同的回调(其中一些可能是必需的,一些可能是可选的),这将需要许多块属性,这很有用。

通常我倾向于在我自己的代码中大部分时间使用块,但如果你发现委托更有意义的情况,请改用这些。

于 2013-07-17T17:50:57.903 回答