在整个项目中,哪一个更适合用于将数据从一个类流向另一个类?
NSInvocation
NSNotificationCentre
delegate
方法
或我不知道的任何其他方法?
答案 0 :(得分:7)
它们都存在,因为它们都有不同的用途。简言之:
<强> NSInvocation的强>
抽象消息发送到一个对象,带有可选参数,表示为对象。不经常使用,特别是因为引入了块。
也可以用作避免创建NSOperation
子类的便捷方法(参见NSIvocationOperation
)。
<强> NSNotificationCenter 强>
向任意数量的未知'听众'广播消息。一对多。广播公司不需要了解听众。包含用于补充信息的用户信息字典。该批次中最重量级/最慢的 - 不经常需要,但为了方便而经常看到。
在许多情况下,代表是足够的替代品。
委托方法
通常是抽象对象,通常采用特定协议。一对一的关系。处理动作而不是子类化的常用方法。
或我不知道的任何其他方法?
块 (^)
也可以用作回调/处理程序,并且通常作为NSInvocations的更多类型安全替代。
答案 1 :(得分:1)
如果您只想与一个对象交谈,请使用委托。例如,tableView有一个委托 - 只有一个对象负责处理它。
如果您想告诉所有人发生了某些事情,请使用通知。例如,在内存不足的情况下,会发送通知,告知您的应用程序存在内存警告。由于您应用中的大量对象可能希望降低其内存使用量,因此这是一个通知。
希望它有所帮助。答案 2 :(得分:1)
只是要添加其他人写的所有东西,NSInvocation不属于这个类别,它只存储一个带参数和可能的目标的方法的调用。它由NSNotificationCeter用于完成其工作。
答案 3 :(得分:0)
我使用代表团。它可以跨平台移动并且更紧凑(并非所有都通过中央调度系统)。