2011-02-12 64 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属性?

相关问题