我正在研究一個網絡服務數據處理應用程序,我試圖讓應用程序儘可能快地運行。當執行某個3指手勢手勢時,我調用一種方法,將更新的信息發送到服務器以獲取新批次的圖像,以更新現有的圖像。什麼時候實際執行方法GUI操作?
所以我們可以說數組中有15個圖像,我用2個手指手勢對它們進行過濾,然後如果我想改變它們的某些方面,我可以做3個手指手勢,回來,只是調整了一下(對比度/亮度等)。
雖然我想要的是能夠更新imageView,它在顯示第一張圖像後顯示圖像,以便讓用戶感覺系列中的其餘部分看起來像。但無論我嘗試什麼,無論嘗試和實現多少個不同的線程,我都無法在整個下載完成之前讓imageView進行更新。一旦批量下載完成(在單獨的線程上處理),imageView將隨新圖像一起更新,一切都很好。
在過程中的第一步驟是這樣的:
if(UIGestureRecognizerStateEnded == [recognize state]){
[self preDownload:windowCounter Level:levelCounter ForPane:tagNumber];// Where this method is what gets the first image, and tries to set it to the imageView
[self downloadAllImagesWithWL:windowCounter Level:levelCounter ForPane:tagNumber]; //And this method goes and gets all the rest of the images
}
這是我的preDownload方法:
-(void)preDownload:(int)window Level:(int)level ForPane:(int) pane{
int guidIndex = [[globalGuids objectAtIndex:pane] intValue];
UIImage *img = [DATA_CONNECTION getImageWithSeriesGUID:[guids objectAtIndex:guidIndex] ImageID:counter Window:window Level:level];
if(pane==0){
NSLog(@"0");
[imageView3 setImage:img];
}else if(pane==1){
NSLog(@"1");
[imageView31 setImage:img];
}else if(pane==2){
NSLog(@"2");
[imageView32 setImage:img];
}else if(pane==3){
NSLog(@"3");
[imageView33 setImage:img];
}
}
所以通過分離這一點成兩種不同的方法(有沒有線程正在在實施這一點,這些方法之前被調用)我想在preDownload方法完成後,imageView會更新,然後控制將繼續下去downloadAllImagesWithWL方法,但似乎並非如此。
我在這裏錯過了一些簡單的東西嗎?在第二種方法通過運行之前,我能做些什麼來更新我的GUI元素?