iOS學習--從lazyTableImages官方例子學到的一些東西

最近做的項目要用到相關功能,於是下下來研究了下。發現在學到不少東西,記錄下來方便以後查閱: 

1.多線程的使用 
例子裏ParseOperation類繼承自NSOperation,當rss的url請求完成後,新生成一個線程放到線程隊列裏,來執行xml的解析工作, 

這樣不會影響主線程的一些後續操作,當解析完成後通知主線程,進行ui更新。 

這裏需要注意的是,iphone開發中,在主線程之外的線程更新主線程所顯示的界面元素,不能直接調用主線程的類的更新界面的方法,否則界面看不到任何結果.而是需要有個緩衝,使 

用performSelectorOnMainThread方法,在線程調用到更新界面那個類的時候,在更新界面前,通過如下調用: 

[self performSelectorOnMainThread:@selector(updateLabel:) withObject:updateData waitUntilDone:YES]; 

上面假設你已經定義了一個- (void)updateLabel:(NSString *)txt{}的方法.在此方法中更新界面即可即時看到結果. 



2.關於uitableviewcell的重用 
因爲我們創建UITableviewCell的時候是以重用的方式來創建,所以就相當於說第一屏顯示的cell就是以後顯示數據和圖片的基礎,因爲後面數據超出一平的時候,我們只是改變數據的顯示,並沒有爲每一個cell的數據元創建相應的一個UITableViewCell(這樣非常的浪費內存),要是我們沒有實現 

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView和- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 

代理的時候,當我們滾動UITableView的時候TableView 就是按照順序來加載圖片的信息資源,這樣當我們用力滾動Table的時候就感覺相當的卡,(其實UITableView實在一個個的顯示出cell的信息)當我們實現了以上代理的話,就可以實現在tableView滾動停止的時候,在去加載數據信息,這樣滾動期間的tableViewCell就可以用默認的圖片信息來顯示了。 

對於uitableviewcell瀏覽中出現數據行重複的問題,一般都是在if(cell==nil){}代碼塊裏,對cell進行了一些賦值而產生的,儘量在代碼塊外面在進行cell賦值,這樣問題就解決了。 

3.有關線程間傳值 
在這兩個線程之間傳遞對象時,一定要明確這個對象的所有者,如果使用的是共用同一塊內存,需要考慮到對象的值變化後對彼此的影響。 
如果只是單方面從一個線程傳對象到另一線程,本線程不在使用這個對象,那麼應該把釋放相應指針,防止誤操作對對象的影響。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章