6

我有一个 iPhone 应用程序,它基本上是从 API 获取信息(在 XML 中,但最终可能是 JSON)。结果对象通常显示在视图控制器(主要是表格)中。

这是现在的架构。

我有从远程服务器获取不同对象的 NSOperation 类。这些 NSOperation 类中的每一个都将采用一个自定义委托方法,该方法将在解析结果对象时回火,然后在没有更多结果可用时最后一个方法。因此,代表的协议将类似于:

(void) ObjectTypeResult:(ObjectType *)result;
(void) ObjectTypeNoMoreResults;

我认为该解决方案效果很好,但我最终得到了一堆委托协议,然后我的视图控制器必须实现所有这些委托方法。我不认为它那么糟糕,但我一直在寻找更好的设计。

所以,我正在考虑使用 NSNotifications 来删除代表的使用。我可以将对象包含在通知的 userInfo 部分中,然后只发布收到的对象,然后在没有更多可用时发布最终事件。然后我可以在每个视图控制器中只使用一种方法来接收所有数据,即使在一个控制器中使用多个对象时也是如此。†</p>

那么,有人可以与我分享每种方法的一些优点/缺点。我是否应该考虑重构我的代码以使用事件而不是委托?在某些情况下,一个比另一个更好吗?在我的场景中,我真的不想在多个地方接收通知,所以也许基于协议的委托是要走的路。

谢谢!

4

1 回答 1

5

实际上,您的设计听起来不错。明确的 Cocoa 方法是使用委托,并且更喜欢到处乱扔对象。此外,以这种方式定义您的协议使您的代码非常明确且易于理解。总而言之:继续努力

于 2010-03-12T21:49:25.103 回答