私はプログラムを書いていて、スレッドやマルチプロセッシングなどについてもっと学ぼうとしています。
私のアーキテクチャはModel/View/Controllerタイプです。
私はNSImageView
(ThumbnailView)の独自のサブクラスを持っており、賢くなり、メッセージをリッスンして自分自身をクリアしたいと思っていました(したがって、すべてのサムネイルは、ループすることなくクリアされます)。
問題は、実際にメッセージをリッスンしているThumbnailView
aによって制御されていることです。ThumbnailViewController
メッセージを受け取ると、コマンド()であるクラスオブジェクトを使用して新しいスレッドをスピンオフしますClearThumbnailViewCommand
。ThumbnailView
関連するオブジェクトとキーを含む辞書アイテムを引数として渡します。ClearThumbnailViewCommand
I内で、ThumbnailView
オブジェクトの画像をニュートラルな画像(gray.jpgなど)に設定しました。
これはすべて正常に機能しますが、変更されたサムネイルオブジェクトは、入力されたサムネイルオブジェクトと同じではありません。したがって、オブジェクトではなくポインタを渡す必要があると思います。通り過ぎるのでMyObject**
はなく使うことについて何か覚えていますが、さまざまな組み合わせを解くことができないようです。それを推論することができなかったので、私は物事のランダムな組み合わせを試すという、通常は絶対確実なシステムに戻りましたが、今回は役に立ちません。 MyObject*
&MyObject
NSDictionary
ポインタを渡すクラスを作成できたとしても(これらの用語を正しく使用しているかどうかはわかりません)、を必要としないに正しく割り当てることができないようですid**
。
それが役に立ったら、以下の基本を含めてみます。
ThumbnailVew : NSImageView {
ThumbnailVewController * _controller;
}
init {
_controller = [[ControllerClass alloc] initWithControlObject: &self];
}
ThumbnailVewController : ControllerClass {
id ** _controlObject;
}
initWithControlObject: (id**)object {
_controlObject = object;
}
次に、メッセージが投稿さThumbnailVewController
れると、最終的にこれを行うメソッドが呼び出されます…もちろん、これは私に渡させません&_controlObject
渡すことができるようにすべて書き直された場合_controlObject
、エラーは発生しませんが、ThumbnailView
変更するのはメソッドに対してのみローカルです。
if([command isEqualToString:@"CLEAR_THUMBNAILS"]) {
NSDictionary * dict;
dict = [[NSDictionary alloc] initWithObjectsAndKeys: &_controlObject, @"thumbnail", nil];
[self newThreadWithCommand:[[[ClearThumbnailViewCommand alloc] initWithArgument:dict] autorelease]];
}
これも可能ですか?