Objective C を使い始めたばかりで、2 つのオブジェクト間の通信に関する質問があります。
私がオブジェクトを持っているとしましょう。これをクラス「Timecode」の main() からインスタンス化されたaTimcodeと呼びましょう。タイムコードで計算を行うメソッドが増えました。
私は 2 番目のオブジェクトを持っています。それをクラス "Video" の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 が何らかの処理を開始した場合でも、それらを保存する必要があります。
正しいコミュニケーション方法とは?代議員?NSNotification?
たとえば、aVideoがaTimecodeに大量のメッセージを送信する状況が考えられます(1 秒間に 10 回以上)。短時間に非常に多くのメッセージを送信する正しい方法は何ですか?