我有一個應用程序根據到達套接字或本地用戶交互的數據執行一些計算。當performSelector afterDelay時沒有發生排隊的視圖更新:0已使用
我想在計算髮生時顯示'活動微調'。
spinner = [[UIActivityIndiactorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
[spinner setCenter:self.view.center];
[self.view addSubview:spinner];
[spinner startAnimating];
[self performSelector:@selector(doCalcs) withObject:nil afterDelay:0];
這很適用,除非通過網絡傳遞消息來運行代碼。我使用http://code.google.com/p/cocoaasyncsocket/來處理套接字,並且代碼在onSocket:didReadData:withTag:方法中運行。
'doCalcs'需要幾秒鐘。微調器在運行時不會出現。
如果我將afterDelay:0更改爲afterDelay:1,則微調確實會出現doCalcs正在運行的整個時間,但缺點是需要多餘的秒數。所以看起來代碼是完全正確的,但無論出於何種原因,在doCalcs運行之前,微調器都沒有機會進入屏幕。
任何建議將是最受歡迎的。
afterDelay:0.1也適用,這也許是一個合理的妥協。 – JosephH 2010-05-07 14:50:01