哪一个更好地使用NSInvocation或NSNotificationCentre或Delegate方法

时间:2012-09-04 06:00:38

标签: iphone ios delegates nsnotificationcenter nsinvocation

在整个项目中,哪一个更适合用于将数据从一个类流向另一个类?

NSInvocation

NSNotificationCentre

delegate方法

或我不知道的任何其他方法?

4 个答案:

答案 0 :(得分:7)

它们都存在,因为它们都有不同的用途。简言之:

<强> NSInvocation的

抽象消息发送到一个对象,带有可选参数,表示为对象。不经常使用,特别是因为引入了块。

也可以用作避免创建NSOperation子类的便捷方法(参见NSIvocationOperation)。

<强> NSNotificationCenter

向任意数量的未知'听众'广播消息。一对多。广播公司不需要了解听众。包含用于补充信息的用户信息字典。该批次中最重量级/最慢的 - 不经常需要,但为了方便而经常看到。

在许多情况下,代表是足够的替代品。

委托方法

通常是抽象对象,通常采用特定协议。一对一的关系。处理动作而不是子类化的常用方法。


  

或我不知道的任何其他方法?

(^)也可以用作回调/处理程序,并且通常作为NSInvocations的更多类型安全替代。

答案 1 :(得分:1)

如果您只想与一个对象交谈,请使用委托。例如,tableView有一个委托 - 只有一个对象负责处理它。

如果您想告诉所有人发生了某些事情,请使用通知。例如,在内存不足的情况下,会发送通知,告知您的应用程序存在内存警告。由于您应用中的大量对象可能希望降低其内存使用量,因此这是一个通知。

希望它有所帮助。

答案 2 :(得分:1)

只是要添加其他人写的所有东西,NSInvocation不属于这个类别,它只存储一个带参数和可能的目标的方法的调用。它由NSNotificationCeter用于完成其工作。

答案 3 :(得分:0)

我使用代表团。它可以跨平台移动并且更紧凑(并非所有都通过中央调度系统)。