從我的主線程中,我啓動了一個圖像加載器方法方法-A(如下)。問題是,如果方法-A未在完成調用時發生新的方法-A,則圖像加載從頭開始。如何從後臺線程中獲取/設置全局變量(BOOL)? (Xcode)
我想要做的是,消除任何新方法-A被同時以前方法-A通話還在做着工作提出所謂的......就我(嘗試)現在做一個簡單的全局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];
}
在此先感謝。
請注意,您的變量不應該是全局的。它應該是一個實例變量,因爲你的方法是一個實例方法,並且圖像加載可能指的是實例存儲/引用的圖像。 – 2011-02-10 09:53:34
@Bavarious感謝這個信息,因爲我仍然對變量和多線程的確切機制缺乏清晰的理解。 – m0rtimer 2011-02-14 01:52:16