私の主なスレッドから、イメージローダーメソッドメソッド-A(下記)を起動します。問題は、新しいメソッド-Aが呼び出されたときにメソッド-Aが終了していない場合は、画像の読み込みが最初から始まることである。私は、以前方法-呼び出しがまだ仕事をしている間に行われたすべての新しい方法-呼び出しを無効にされて何をしたいのかバックグラウンドスレッド内からグローバル変数(BOOL)を取得/設定する方法は? (Xcode)
...道I(への試み)これは、単純なグローバルなBOOL変数(BOOL imageLoaderBusy)を持ち、メソッド-Aがまだ動作しているかどうかを追跡するために使用していますか(以下参照)。
問題は、変数が無視されるように見えることがあり、新しいメソッド-Aの呼び出しが望ましくなく開始された...私はうんざりです。おそらく、グローバル変数を作成して複数のスレッド間でアクセス可能/有効にする特別な方法がありますか?
誰かが私が間違っていることを教えていただけますか?ありがとう。
//Method-A called like this:
[self performSelectorInBackground:@selector(loadPagesWithGraphics:) withObject:nil];
//Method-A
-(IBAction)loadPagesWithGraphics:(id)sender{
NSAutoreleasePool *arPool = [[NSAutoreleasePool alloc] init];
if(!imageLoaderBusy){
imageLoaderBusy = YES;
// Load Images
}
imageLoaderBusy = NO;
[arPool release];
}
ありがとうございます。
変数がグローバルであってはならないことに注意してください。メソッドがインスタンスメソッドであり、イメージの読み込みはおそらくインスタンスによって格納/参照されるイメージを参照するため、インスタンス変数にする必要があります。 –
@変数とマルチスレッドの正確な仕組みについてはっきりと理解していないので、この情報には大変感謝しています。 – m0rtimer