6

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

NSInvocation

NSNotificationCentre

delegate方法

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

4

4 回答 4

7

它们都存在,因为它们都服务于不同的目的。简要地:

NS调用

抽象消息发送到一个对象,带有可选参数,表示为一个对象。不经常使用,尤其是在引入块之后。

也可以用作避免创建NSOperation子类的便捷方式(请参阅 参考资料NSIvocationOperation)。

NSNotificationCenter

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

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

委托方法

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


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

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

于 2012-09-04T06:08:02.287 回答
1

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

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

希望能帮助到你。

于 2012-09-04T06:07:32.947 回答
1

只是添加到其他人编写的所有内容中,NSInvocation 不属于这一类,它只是存储了一个带有参数的方法的调用和可能的目标。NSNotificationCeter 使用它来完成它的工作。

于 2012-09-04T06:16:00.790 回答
0

I use delegation. It's portable across platforms and tighter (not all going through a central dispatching system).

于 2012-09-04T06:04:27.907 回答