iOS模拟器中UITableView滚动不流畅

3

这里有一个视频,记录了在单元格中记录索引路径的过程(请参见下面的新链接)

又是一个奇怪的问题... 在我的家用iMac上(全新),当我在模拟器中第一次运行Xcode项目时,它可以正常运行。 如果我退出模拟器和Xcode,然后再次打开Xcode并运行它 - (把这看作是另一天开始工作在该项目上)- 当我尝试滚动任何uitableview时,模拟器会重新绘制所有单元格(似乎没有正确地出列和重复使用)。 我知道这是因为当绘制单元格时,我正在运行NSLog。

如果我重置模拟器中的设置,然后再次运行它 - 它会平稳滚动。 我已经尝试完全卸载Xcode并重新安装它,但无济于事。 我正在使用Xcode 4.3.2。

现在,人们可能会认为这是代码的问题,但是听到这个: 我在办公室还有一台(全新的iMac)。我在dropbox上拥有这个Xcode项目,因此两个副本都是相同的(办公室和家庭)。在办公室,我没有这种奇怪的滚动问题...一切正常。

这两台Mac之间唯一的区别(都是27英寸,有16GB RAM)是硬盘 - 办公室的Mac具有1TB 7200 RPM驱动器。我家里的Mac有一个来自Apple的SSD。

我不知道会导致这个问题...真的很令人沮丧。 我不反对清除我的家用Mac并重新开始,但那有点极端。

想法?我没有发布代码,因为在两台不同的计算机上运行相同的代码会产生不同的结果,因此代码似乎不是问题所在。

使用代码更新和视频http://ge.tt/4ZuZ9mI/v/0

       - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

            static NSString *CellIdentifier = @"dateCell";

            FEDateCell *cell = (FEDateCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
            if (cell == nil) {
                [[NSBundle mainBundle] loadNibNamed:@"FEDateCell" owner:self options:nil];
                cell = dateCell; 
                [cell setClipsToBounds:YES];
            }
            PFObject *eventObj = [self.itemsList objectAtIndex:indexPath.row];
            //Get cell date from row
            NSDate *currentDate = [eventObj objectForKey:@"startDate"];

            cell.cellDate = currentDate;
            cell.eventsArray = [NSArray arrayWithObject:eventObj];

            [dateFormatter setDateFormat:@"dd"];
            cell.dayNumber.text = [dateFormatter stringFromDate:cell.cellDate];
            [dateFormatter setDateFormat:@"EEE"];
            cell.dayName.text = [dateFormatter stringFromDate:cell.cellDate];


            [cell updateCellData];

            return cell;
        }

有些电脑处理滚动比其他电脑更好......或者可能在您的家庭iMac上同时运行许多应用程序(即VM页面交换),但在您的工作iMac上只有您的应用程序。我仍然认为您应该发布您的“ cellForRowAtIndexPath:”代码,这将显示您在出列和单元格创建方面所做的工作。 - Michael Dautermann
清理和重建并不能解决问题。我必须重置模拟器设置才能使滚动工作...这真的非常令人沮丧。 - dcinzona
这是一个视频 - http://ge.tt/4ZuZ9mI/v/0 - dcinzona
如果项目不在Dropbox上,这种情况会发生吗?我听说过在混合使用Xcode项目和Dropbox时会出现奇怪的行为。 - sosborn
嗨@dcinzona,TBC你尝试过这个解决方案吗?http://stackoverflow.com/questions/26064366 - Fattie
显示剩余3条评论
4个回答

1
经过慎重考虑,我决定彻底清除iMac并进行干净安装。
现在,虽然我刚刚执行了干净安装(实际上相当于在iOS模拟器中重置内容和设置),但问题似乎已经消失了。 现在,我不确定这一点,因为我刚刚执行了干净安装,但是我已经多次关闭和重新打开了Xcode,重新启动了几次,问题没有再次出现。

真的很烦人,需要格式化系统并从头开始,但无论如何,至少它正在工作。


1
我可以确认,操作系统的全新安装解决了这个问题。多天来的编码反复测试,没有出现任何问题。看起来苹果的映像过程中存在某种奇怪的 bug。无论如何,问题已经解决。 - dcinzona
1
非常感谢您提交的报告,@dcinzona。请问是仅在iPhone6模拟器上出现了卡顿问题还是其他所有设备上都有?希望能得到回复,再次感谢!!! - Fattie

0
如果事情发生的跟你描述的一样,考虑向苹果 报告 一个bug。

是的,我现在可能会这样做。我也会发布一个视频来展示它的发生。 - dcinzona
我向苹果提交了一个错误报告,尽管在尝试了一些其他“Dropbox”项目之后,我注意到表视图可以正常滚动(尽管我没有任何其他具有极大表视图的项目,因此我可能会创建一个并查看问题是否继续存在。如果它不再存在,那么我正在寻找一种代码问题,似乎只影响我计算机上模拟器...该项目在我所有测试设备上都可以完美运行。 - dcinzona
1
错误报告链接:(https://bugreport.apple.com/cgi-bin/WebObjects/RadarWeb.woa/57/wo/c1stvVx2wniL3VfVFYdbF0/8.66) - dcinzona
@dcinzona,我无法通过此链接访问您的报告。如果您尝试复制项目并仅保留必需的代码以重现问题,并将此项目附加到报告中,那将会很有帮助。否则,苹果工程师将难以分析该问题。您还需要使用“系统信息”应用程序(文件->保存)将系统信息导入.spx文件,其中包含一些Xcode /模拟器-SDK信息等其他信息。 - A-Live
@Joe Blow,1. 请在问题下发表评论,而不是回答。2. 第二个链接正常工作。 - A-Live

0

尝试安装最新版本的显卡驱动程序


尝试在另一个SDK上重新编译。例如,在10.6上。 - CReaTuS

0
我认为这里提供的信息不足以确定问题所在。我认为最好的方法是使用Xcode分析工具来跟踪问题可能出现的位置。此外,还要查看图形分析工具,以确定是否存在过多的绘制操作。

请查看此文档:http://developer.apple.com/library/ios/#documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/Built-InInstruments/Built-InInstruments.html#//apple_ref/doc/uid/TP40004652-CH6-SW17 - ThomasW

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接