【发布时间】:2012-09-26 11:22:40
【问题描述】:
我刚开始使用 Objective C,并且有一个关于两个对象之间通信的问题。
假设我有一个对象,我们称它为 aTimcode,它是从“时间码”类中的 main() 实例化的,该类是一个存储时间码的类(例如 01:30:20:10)和具有减少/增加此时间码的方法以及更多使用时间码进行数学运算的方法。
我有第二个对象,我们称之为“视频”类中的 aVideo,它在视频上执行一些 (openCV) 内容,也是在 main() 中创建的。
所以我的 main() 看起来像:
Timecode *aTimecode = [[Timecode alloc] init];
Video *aVideo = [[Video alloc] init];
[aVideo doFancyOpenCVSTUFF: someparameter];
我现在希望 aVideo 调用 aTimecode 上的方法。像
[aTimecode increaseFramesBy: 5];
我知道建立通信的简单方法是在 aVideo 中实例化 aTimecode:
// somewhere within aVideo
Timecode * aTimceode = [[Timecode alloc] init];
[aTimecode increaseFramesBy: 5];
[aTimecode release];
但这当然会破坏存储在aTimecode中的信息。
但是当程序更进一步时,我希望有很多 Video 对象(bVideo、cVideo 等)为 aTimecode 中的值做出贡献 并对之前存储的数字进行数学运算。 aTimecode 应该存储它们,即使 aVideo 被发布并且 bVideo 开始做一些事情。
什么是正确的沟通方式?代表? NS通知?
可能存在这样的情况,例如 aVideo 向 aTimecode 发送大量消息 - 每秒 10 次或更频繁。在短时间内发送这么多消息的正确方法是什么?
【问题讨论】:
标签: objective-c opencv delegates nsnotifications