我刚开始使用Objective C,并且有一个关于两个对象之间通信的问题。
假设我有一个对象,让我们称它为从 main() 实例化的来自“时间码”类的aTimcode ,这是一个存储时间码(例如 01:30:20:10)的类,并具有减少/增加此时间码的方法和一些更多使用时间码进行数学运算的方法。
我有第二个对象,我们将其称为“视频”类中的视频,它在视频上执行一些(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 发布时破坏存储在 aTimecode 中的信息。
但是当程序更进一步时,我希望有很多 Video 对象(bVideo、cVideo等...)为aTimecode中的值做出贡献,并使用先前存储的数字进行数学运算。即使 aVideo 被释放并且 bVideo 开始做一些事情,aTimecode 也应该存储它们。
正确的沟通方式是什么?代表?NS通知?
可能存在例如aVideo向aTimecode发送大量消息的情况- 每秒 10 次或更频繁。在短时间内发送这么多消息的正确方法是什么?