在整个项目中,哪一个更适合用于将数据从一个类流向另一个类?
NSInvocation
NSNotificationCentre
delegate
方法
或通过我不知道的任何其他方法?
在整个项目中,哪一个更适合用于将数据从一个类流向另一个类?
NSInvocation
NSNotificationCentre
delegate
方法
或通过我不知道的任何其他方法?
它们都存在,因为它们都服务于不同的目的。简要地:
NS调用
抽象消息发送到一个对象,带有可选参数,表示为一个对象。不经常使用,尤其是在引入块之后。
也可以用作避免创建NSOperation
子类的便捷方式(请参阅 参考资料NSIvocationOperation
)。
NSNotificationCenter
向任意数量的未知“听众”广播消息。一对多。广播者不需要了解听众。包括用于补充信息的用户信息字典。最重量级/最慢的 - 不经常需要,但为了方便而经常看到。
在许多情况下,代表是足够的替代品。
委托方法
通常是一个抽象对象,通常采用特定协议。一对一的关系。处理动作而不是子类化的常用方法。
或通过我不知道的任何其他方法?
块 (^)
也可以用作回调/处理程序,并且通常作为 NSInvocations 的更类型安全的替代品。
如果您只想与一个对象交谈,请使用委托。例如,一个 tableView 有一个委托 - 只有一个对象应该负责处理它。
如果您想告诉所有人发生了什么事,请使用通知。例如,在内存不足的情况下,会发送一条通知,告诉您的应用程序存在内存警告。因为您的应用程序中的许多对象可能希望降低其内存使用量,所以这是一个通知。
希望能帮助到你。
只是添加到其他人编写的所有内容中,NSInvocation 不属于这一类,它只是存储了一个带有参数的方法的调用和可能的目标。NSNotificationCeter 使用它来完成它的工作。
I use delegation. It's portable across platforms and tighter (not all going through a central dispatching system).