代码之家  ›  专栏  ›  技术社区  ›  jr. Aikon Mogwai

nsnotification与delegate协议?

  •  6
  • jr. Aikon Mogwai  · 技术社区  · 16 年前

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

    这是现在的建筑。

    我有一些从远程服务器获取不同对象的操作类。这些nsOperation类中的每一个都将采用一个自定义委托方法,该方法将在解析结果对象时激发它们,最后在没有更多结果可用时激发一个方法。因此,代表的协议如下:

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

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

    所以,我正在考虑使用nsnotifications来删除对代理的使用。我可以将该对象包含在通知的userinfo部分中,并在接收到对象后发布,然后在没有更多可用对象时发布最后一个事件。然后我可以在每个视图控制器中使用一个方法来接收所有数据,即使在一个控制器中使用多个对象也是如此。

    所以,有人能和我分享一下每种方法的优缺点吗?我应该考虑重构代码以使用事件而不是委托吗?在某些情况下,一个比另一个好吗?在我的场景中,我真的不希望在多个地方接收通知,所以基于协议的委托可能是解决问题的方法。

    谢谢!

    1 回复  |  直到 16 年前
        1
  •  5
  •   niklassaers    16 年前

    实际上,你的设计听起来不错。clear cocoa方法是使用委托,并且更倾向于将对象扔在周围。此外,以这种方式定义协议使您的代码非常明确和容易理解。总而言之:继续做好工作

    推荐文章