2012年1月5日 星期四

運用thread實作背景load data,同時畫面show loading Image

1.一開始先看如何製作並管理thread在obj-c環境下---運用NSInvocationOperation

http://c.gzl.name/archives/tag/nsinvocationoperation

2.上面教學沒有教到call back main thread的方法,這裡有---performSelectorOnMainThread

http://www.switchonthecode.com/tutorials/loading-images-asynchronously-on-iphone-using-nsinvocationoperation

3.有關畫面更新開發注意

除了main thread以外,其他thread不能使用UIkit,這意謂著你不能再其他thread做更新view的動作(addSubview: ....etc)

解決方法就是用第二點回到main thread並呼叫你想要的更新view的方法!

比如實作運用如MBProgressHUD來在main thread裡面做show Loading Image,然後在second thread裡面load data,load完之後再call back回main去執行[HUD removeFromSuperview];

4.如果配合MBProgressHUD開發而loading時間很長時(>5秒)請注意

另外有時候loading時間會很長,預設MBProgressHUD的loading image過一段時間(約5秒)不管是否有呼叫 removeFromSuperview都會自己消失,簡單得解決辦法是去MBProgressHUD.m找到hide方法,把它的

[self hideUsingAnimation:useAnimation];

這行註解調就可以了,這樣如果沒有呼叫removeFromSuperview圖案就不會消失囉~

沒有留言: