2011-02-12 62 views
1

我有一個表格視圖,如圖所示。它顯示來自數據庫的各種歐洲語言。當我滾動tableview時,滾動不平滑,有時會卡住一兩秒鐘。什麼可能是錯的?iPHONE:TableView滾動不順暢 - 有什麼可能是錯誤的?

我使用下面的代碼進行解碼的語言:

NSString *cellText = [[langArray objectAtIndex:i] valueForKey:[NSString stringWithFormat:@"%@",lblshortName.text]]; 

    if (cellText != (NSString *)[NSNull null] && ![cellText isEqualToString:@""]) { 
     NSString *decodedString3 = [NSString stringWithUTF8String:[cellText cStringUsingEncoding:[NSString defaultCStringEncoding]]]; 

     [cellTextArray addObject:[NSString stringWithFormat:@"%@ : %@",lblshortName.text, decodedString3]]; 
    } 
    else { 
     [cellTextArray addObject:@"<empty>"]; 
    } 

enter image description here

+0

聽起來像是典型的iOS我:) – raidfive 2011-02-12 04:43:04

回答

2

我會建議做一些事情..

  1. 檢查要重複使用的小區,如果然後你通過爲每個新的細胞計數器進行交叉檢查。

  2. 使用靜態分析和檢查任何潛在泄漏的儀器,內存分配和對象都被釋放與否。

如果一切都很好..然後就很難說什麼沒有看到代碼的其他部分.. 一個你可以做更多的事情是使用異步線程獲取數據準備表視圖。

0

這將幫助,如果你提供更多的代碼,尤其是如何使用表視圖細胞,因爲表視圖細胞極易引起性能問題。

關於你的代碼,好像整個cellTextArray正在呈現表視圖之前建造的,比方說,當你初始化表視圖的數據源。正確?預構建數據通常可以提高性能,但如果數組真的很大,因此會導致內存問題,那麼您可能需要動態構建文本。

更可能的,但是,我會首先檢查以下內容:

  1. 是表視圖細胞特性被重用?
  2. 表視圖單元格中的子視圖不透明嗎?
  3. 是不是表視單元每次都繪製整個區域?
  4. 你是不是不必要地直接調用drawRect:方法?
0

.layer屬性在很多地方被使用時,我已經看到了這樣的行爲,所以,你是否訪問表格單元格中子視圖的.layer屬性?

相關問題