在3GS上运行的iPhone应用程序中的滚动问题
问题描述:
当我在iPhone 3S上运行时,以下方法导致滚动问题。我知道我们可以提高滚动的性能,但即使在网上搜索了很多东西并尝试了几件事,也不知道如何去做。在3GS上运行的iPhone应用程序中的滚动问题
我所遇到使细胞不透明和/或使表视图作为子视图,大大提高了滚动性能,如果有人可以修改下面的代码或只是点什么需要在下面的代码改变。 我的代码如下。
// cell is created for each row of track.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"tableView cellForRowAtIndexPath");
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
[CellIdentifier release];
cell.accessoryView = nil;
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:CellIdentifier];
}
/** saving the data in Book structure.**/
Book *aBook = [appDelegate.books objectAtIndex:indexPath.row];
[cell.textLabel setText: aBook.name];
// indexrow refers to each cell
temp =[appDelegate.tracklocation intValue];
requesttemp =[appDelegate.requestlocation intValue];
// Coloring Code starts
// indexPath starts from 0th cell that is why it is incremented by 1
if(temp==(indexPath.row+1))
{
NSLog(@"value of temp inside if is = %d",temp);
NSLog(@"value of indexrow inside if is=%d",(indexPath.row+1));
UIImageView *imageView1 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"speaker.png"]];
imageView1.backgroundColor = [ UIColor greenColor ];
cell.contentView.backgroundColor = [ UIColor greenColor ];
[cell.textLabel setBackgroundColor:[UIColor greenColor]];
[cell.textLabel setTextColor:[UIColor blackColor]];
[cell.detailTextLabel setBackgroundColor:[UIColor greenColor] ];
[cell.detailTextLabel setTextColor:[UIColor blackColor] ];
cell.accessoryView = imageView1;
[imageView1 release];
}
else
{
cell.contentView.backgroundColor = [ UIColor whiteColor ];
[cell.textLabel setBackgroundColor:[UIColor whiteColor] ];
[cell.textLabel setTextColor:[UIColor blackColor ]];
[cell.detailTextLabel setBackgroundColor:[UIColor whiteColor]];
[cell.detailTextLabel setTextColor:[UIColor grayColor] ];
}
while(requesttemp>temp)
{
if (requesttemp==(indexPath.row+1))
{
if (colorflag==1)
{
NSLog(@"value of request temp inside while is = %d",requesttemp);
NSLog(@"value of indexrow inside while is=%d",(indexPath.row+1));
cell.contentView.backgroundColor = [ UIColor blueColor ];
[cell.textLabel setBackgroundColor:[UIColor blueColor ]];
[cell.textLabel setTextColor:[UIColor whiteColor ]];
[cell.detailTextLabel setBackgroundColor:[UIColor blueColor] ];
[cell.detailTextLabel setTextColor:[UIColor whiteColor] ];
}
}
requesttemp=requesttemp-1;
}
}
cell.detailTextLabel.text = abook.artist;
cell.detailTextLabel.numberOfLines = 1;
cell.detailTextLabel.lineBreakMode = UILineBreakModeWordWrap;
NSLog(@"RootViewController cellForRowAtIndexPath %@ ",cell);
return cell;
}
答
[cellIdentifier release] ?? 你不释放静态! 您的单元重用可能因为它而失败。
也有是在UITableViewCell的分配没有自动释放。这应该会导致大量的泄漏,并最终减缓/崩溃应用程序。
这是泄漏+细胞重用失败
希望这有助于
iPhone 3S不exsist,这是一个3GS的一个致命的组合。 [脸掌]; – Wolfert 2011-12-16 11:53:11
@ maddy2011:你的接受率很差。 – Sarah 2011-12-16 11:59:15