gpt4 book ai didi

iOS:调试简单的 UI 滞后(我猜是基于 CoreData)

转载 作者:行者123 更新时间:2023-11-29 10:49:54 24 4
gpt4 key购买 nike

我目前正在测试我的应用程序,尤其是在 iPhone 4s 上。一些简单的 UI 任务看起来滞后和延迟,例如在 Collection View 中选择图像或更改 UI 复选框的状态。有没有更好的方法来做到这一点?我需要在这里做一些异步的事情吗?如果更改了某些内容,则 CoreData 中的属性也会更改,但这会这么慢吗?

CollectionView(图片名称都保存在viewdidload上的一个数组中):

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *identifier = @"IconCell";

IconSelectionCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];

cell.iconImageView.image = [UIImage imageNamed:[self.icons objectAtIndex:indexPath.row]];

return cell;
}

#pragma mark Collection View Delegate methods
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
self.mainCategory.icon = [self.icons objectAtIndex:indexPath.row];
}

以 UISwitch 为例:

- (IBAction)liveBudgetSwitched:(id)sender
{
self.spendingCategory.liveBudget = [NSNumber numberWithBool: self.liveBudgetSwitch.on];
}

最佳答案

用那个代码很难帮你。可能有很多事情。也许您的图像比应有的大得多,也许您的单元格在一个标签或背景中有阴影,谁知道呢?

因此,您需要先找出问题所在。

这种情况可以打开仪器分析问题是CPU还是GPU。

您可以使用 Time Profiler 了解问题是否出在 CPU 上,而对于 GPU,您可以使用 Core Animation。

在时间分析器中尝试检查 CPU 消耗最多的地方。您可以使用一些选项来帮助您专注于您的代码。您可以仅显示 objective-c隐藏系统库

在 Core Animation 中,您有许多选项可以用来检查您可能遇到的一些问题。这个选项是:

  • Color Blended Layers - 突出显示多个层彼此叠加且 GPU 需要混合这些层的地方
  • 颜色为绿色而没有为红色 - 如果它是绿色,那么你很好,如果它是红色,那么你没有缓存你的图像,这些图像会被重新生成很多次(它可以例如,当你有阴影时就会发生)
  • 彩色复制图像 - 如果它显示蓝色,则核心动画在应该发送指针时将图像副本发送到渲染服务器
  • Flash Updated Regions - 重绘 View 时显示黄色

关于iOS:调试简单的 UI 滞后(我猜是基于 CoreData),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20899782/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com