2010-03-12 130 views
6

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

这里的建筑现在。

我有取从远程服务器对象的不同的NSOperation类。这些NSOperation类中的每一个都将采用一种自定义的委托方法,该方法将在解析结果对象时触发它们,然后在没有更多结果可用时最终生成一个方法。因此,对于代表协议会是这样的:

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

我认为解决的办法效果很好,但我结束了一堆左右,然​​后我的视图控制器有委托协议,以实现所有这些委托方法。我不认为它很糟糕,但我一直在寻找更好的设计。

所以,我想使用NSNotifications删除使用代表。我可以将该对象包含在通知的userInfo部分中,并仅在接收到对象后发布对象,然后在不再有可用时发送最终事件。然后,我可能只是在每个视图控制器的一个方法来接收所有的数据,在一个控制器使用多个对象时也是如此。†

因此,可以跟我的人分享一些优点/每种方法的利弊。我应该考虑重构我的代码来使用事件而不是代表?在某些情况下,其他人会更好吗?在我的情况下,我真的不想在多个地方收到通知,所以基于协议的代表可能是要走的路。

谢谢!

回答

5

其实,你的这个设计听上去声音。清晰的Cocoa方法使用委托,并且更倾向于将对象抛出。此外,以这种方式定义您的协议使得您的代码非常明确且易于理解。总而言之:保持良好的工作