iPHONE:TableView滚动条不是';t平滑-可能有什么问题?

iPHONE:TableView滚动条不是';t平滑-可能有什么问题?,iphone,objective-c,cocoa-touch,iphone-sdk-3.0,ios4,Iphone,Objective C,Cocoa Touch,Iphone Sdk 3.0,Ios4,我有一个表视图,如图所示。它显示数据库中的各种欧洲语言。当我滚动tableview时,滚动并不平滑,有时会卡住一两秒钟。有什么不对劲吗 我正在使用以下代码解码这些语言: NSString *cellText = [[langArray objectAtIndex:i] valueForKey:[NSString stringWithFormat:@"%@",lblshortName.text]]; if (cellText != (NSString *)[N

我有一个表视图,如图所示。它显示数据库中的各种欧洲语言。当我滚动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>"];
    }
NSString*cellText=[[langArray objectAtIndex:i]valueForKey:[NSString stringWithFormat:@“%@”,lblshortName.text]];
如果(cellText!=(NSString*)[NSNull null]&&![cellText IsequalString:@”“){
NSString*decodedString3=[NSString stringWithUTF8String:[cellText cStringUsingEncoding:[NSString defaultCStringEncoding]];
[cellTextArray addObject:[NSString stringWithFormat:@“%@:%@”,lblshortName.text,decodedString3];
}
否则{
[cellTextArray addObject:@”“;
}

我建议你做几件事

  • 检查是否重复使用该单元,如果重复使用,则通过为每个新单元放置计数器来交叉检查其工作情况

  • 使用静态分析器和仪器检查任何潜在泄漏、内存分配和对象是否被释放

  • 如果一切顺利。。那么,如果没有看到代码的其他部分,就很难说出任何事情。。
    您可以做的另一件事是使用异步线程为表视图准备数据。

    如果您提供更多代码,尤其是如何使用表视图单元格,这将有所帮助,因为表视图单元格很容易导致性能问题

    关于您的代码,整个cellTextArray似乎是在显示表视图之前构建的,比如在初始化表视图的数据源时。对的预构建数据通常有助于提高性能,但是如果数组非常非常大,导致内存问题,那么您可能需要动态构建文本

    然而,更可能的是,我会首先检查以下内容:

  • 是否重用表视图单元格属性
  • “表视图”单元格中的子视图是否不透明
  • 表视图单元格不是每次都绘制整个区域吗
  • 您不是不必要地直接调用drawRect:method吗

  • 我在很多地方使用
    .layer
    属性时看到过这种行为,那么,您是在表单元格中访问子视图的.layer属性吗?

    听起来像是典型的iOS:)发布更多代码,特别是在
    cellforrowatinexpath
    中如何使用您的代码片段。从表面上看,在模拟器中运行时,表视图中不应该出现“1秒或2秒延迟”。