在我的應用我有在那裏我調用Web服務和檢索JSON,然後將其解析爲對象的數組一對夫婦的地方。耗時的部分絕對是Web服務調用。我想要的行爲如下:UIAlertView中有UIActivityIndicator顯示出來太晚/線程問題
- 用戶選擇感興趣
- 排開,AlertView與ActivtiyIndicator子視圖添加
- 數據加載在新的VC當前視圖
- 新觀點似乎
- AV指標去了
我的VC的配備doLoadData
方法,基本上加載顯示的數據數組由每個VC。例如:
AnimalViewController
有一個按鈕「查看狗」按下時的功能:
DogViewController *vc = [[DogViewController alloc] init];
[self.navigationController pushViewController:vc animated:YES];
[vc release];
DogViewController
擁有財產NSArray *dogs
和方法doLoadDogs
,這需要一段時間才能發生。
目前我在 「查看狗」 的方法:
- 與ActivityIndicator
- 顯示它
- 創建VC
- 推
- 隱藏AlertView 創建AlertView
- 釋放和零它
這看起來似乎並不困難,但我還沒有找到線程的簡單實現。
這(上面的代碼塊)提高了一些事情的,但現在發生的事情是:viewDogs叫暫停,新的屏幕(帶數據和活動指示器)出現,活動指示器消失,黑角消失。我想要發生的是:viewDogs調用,在該屏幕上顯示活動指示器,直到loadDogs完成,然後顯示新屏幕 –
@ jshin47是的,它不好。最好的辦法是將你的加載代碼分解出來,這樣它就不會阻塞,並在完成時以某種方式通知你。使用GCD來做這件事相對容易,但你不想用一種方法來完成。 –
@JasonCoco爲什麼在不同的線程上使用dispatch_async而不是performselector? –