UICollectionView 在 unhighlightAllItems 上崩溃

2024-01-11

我收到了几份与 iOS 7 中的 UICollectionView 相关的崩溃报告。我无法始终如一地重新创建此崩溃。

Exception Type:  SIGSEGV
Exception Codes: SEGV_ACCERR at 0x91c4392b
Crashed Thread:  0

Application Specific Information:
*** Terminating app due to uncaught exception '', reason: ''

Thread 0 Crashed:
0   libobjc.A.dylib                     0x39dd2b26 objc_msgSend + 6
1   UIKit                               0x31fd5eef -[UICollectionView cellForItemAtIndexPath:] + 111
2   UIKit                               0x32060bfd -[UICollectionView _unhighlightItemAtIndexPath:animated:notifyDelegate:] + 149
3   UIKit                               0x32383947 -[UICollectionView _unhighlightAllItems] + 151
4   UIKit                               0x3205f9fb -[UICollectionView touchesBegan:withEvent:] + 367
5   UIKit                               0x31fcb101 forwardTouchMethod + 233
6   UIKit                               0x31fcb101 forwardTouchMethod + 233
7   UIKit                               0x31e3be4b _UIGestureRecognizerUpdate + 5523
8   UIKit                               0x31e73c41 -[UIWindow _sendGesturesForEvent:] + 773
9   UIKit                               0x31e735e7 -[UIWindow sendEvent:] + 667
10  UIKit                               0x31e48a25 -[UIApplication sendEvent:] + 197
11  UIKit                               0x31e47221 _UIApplicationHandleEventQueue + 7097
12  CoreFoundation                      0x2f69e18b __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
13  CoreFoundation                      0x2f69d6e1 __CFRunLoopDoSources0 + 341
14  CoreFoundation                      0x2f69be4f __CFRunLoopRun + 623
15  CoreFoundation                      0x2f606ce7 CFRunLoopRunSpecific + 523
16  CoreFoundation                      0x2f606acb CFRunLoopRunInMode + 107
17  GraphicsServices                    0x342f4283 GSEventRunModal + 139
18  UIKit                               0x31ea8a41 UIApplicationMain + 1137
19  JackThreadsIpad                     0x000922b7 main (main.m:16)

应用程序中的 UICollectionViewCells 共享一个管理突出显示的公共超类。当单元格突出显示时,alpha 会发生变化。

- (void)setHighlighted:(BOOL)highlighted {
    [super setHighlighted:highlighted];

    if (highlighted) {
        self.alpha = 0.8;
    } else {
        self.alpha = 1.0;
    }
}

调用 [super setHighlighted:highlighted] 会导致这样的崩溃吗?该应用程序是使用 XCode 4 编译和提交的,并且仅发生在 iOS 7 上。任何其他建议可以找出发生这种情况的位置。感谢您的帮助。

编辑: 我能够在调试器中捕获这一点,但它仍然不能一致地重现。崩溃是:

[NSIndexPath section] message sent to deallocated instance XXXXXXXX

如果您在用户拖动视图时调用 reloadData,这可能就是原因。

我遇到了与此相关的崩溃,并有类似的崩溃报告,并通过延迟 reloadData 调用直到用户完成滚动视图来“修复”该问题。例如。创建一个包装方法而不是直接调用 reloadData。

- (void)updateData {
     if (self.collectionView.isTracking) {
         self.updateDataOnScrollingEnded = YES;
     } else {
         [self.collectionView reloadData];
     }
}

然后,当滚动结束时,从滚动视图的委托方法中调用 updateData 方法(如果需要)。

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    if (!decelerate) {
        [self scrollViewStopped:scrollView];
    }
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    [self scrollViewStopped:scrollView];
}

- (void)scrollViewStopped:(UIScrollView *)scrollView
{
    if (self.updateDataOnScrollingEnded) {
         [self updateData];
         self.updateDataOnScrollingEnded = NO;
     }
}

我的猜测是,在 collectionView 内部某处对突出显示的单元格的索引路径存在弱引用,并且调用重新加载将释放该索引路径。当 collectionView 尝试取消突出显示单元格时,它会崩溃。

EDIT:

正如下面的评论中提到的,这个“解决方案”有一些缺陷。在进一步调查该问题时,似乎在我的情况下,问题与拖动集合视图期间在主线程上排队的多个 reloadData 调用有关。当只有一个 reloadData 调用时,一切都很好,但每当有多个 reloadData 调用时 - 崩溃!

由于我的 collectionView 中始终只有一个部分,因此我将 reloadData 调用替换为

reloadSections:[NSIndexSet indexSetWithIndex:0]

但是,这会导致单元格快速淡出并再次返回,我使用以下方法避免了这种情况(作为集合视图上的类别可能会更好)

- (void)reloadCollectionView:(UICollectionView *)collectionView animated:(BOOL)animated
{
    [UIView setAnimationsEnabled:animated];
    [collectionView performBatchUpdates:^{
        [collectionView reloadSections:[NSIndexSet indexSetWithIndex:0]];
    } completion:^(BOOL finished) {
        [UIView setAnimationsEnabled:YES];
    }];
}

到目前为止,这对我来说效果很好,并且它还允许在滚动时实际更新数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UICollectionView 在 unhighlightAllItems 上崩溃 的相关文章

  • iOS 电池监控 Swift

    我已将监控设置为启用 但模拟器和设备中的电池电量仍然为 1 UIDevice currentDevice batteryMonitoringEnabled true var level UIDevice currentDevice batt
  • iOS - 当 UIView 移动时将 UITextField 移动到不同的位置

    我有一个主 UIView 它通过开关向上移动 我有这个工作 那里没有问题 现在 UIView 当向下时 占据屏幕的大约一半 当它向上推时 它会显示底部 40px 在 UIView 中 当它处于向下状态时 它有一个 UITextField 并
  • AVCaptureSession 具有多个方向问题

    我正在尝试实现条形码扫描仪 我有一个 AVCaptureSession 它从 AVCaptureDevice 接收视频 我想支持所有方向 使用以下代码 当我运行应用程序时 纵向一切正常 然而 在横向方向上 视图会旋转 但视频输入不会旋转 所
  • 在 IOS 上使用 AVComposition 混合两个音频文件

    我正在尝试混合两个音频文件 将一个音频文件放在另一个音频文件之上 不是缝合在一起 但我在 IOS 上学习 AVFoundation 时遇到了困难 我在这里遵循了这个答案 如何使用 AVMutableCompositionTrack 合并音频
  • 适用于 IOS 和 Android 的支付网关 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个应用程序 用户必须在澳大利亚餐馆通过应用程序 android ios 付款 有两种付款方式 通过 PayPal 或 Visa
  • 从命令行调试 iOS 应用程序构建

    我正在通过命令行构建 iOS 应用程序 但在调试它时遇到问题 如果我使用 XCode 进行构建 它会让我在设备上 构建和调试 而不会出现任何问题 但现在 我不知道如何使用 gdb 在设备上启动它并逐步执行它 如果我尝试 添加自定义目标 可执
  • 在带有 Storyboard 的 XCode 4 中以模态方式推送视图时,出现“对开始/结束外观转换的不平衡调用”警告

    在网上进行了一些研究但没有成功后 我来这里向您询问有关我的警告的问题 实际上 我有一个带有导航控制器的视图 V1 我想在 V1 完成加载时推送模态视图 V2 所以我用performSegueWithIdentifier方法 我正在使用故事板
  • 缺少常规选项卡

    我刚刚切换到使用 Xcode 5 我已经用一些需要更改的其他设置更改了我的应用程序的名称 但是当我执行此操作时 我注意到我的 常规 选项卡丢失了 有谁知道为什么会发生这种情况 只是快速更新如何在 Xcode 8 中执行此操作
  • iOS 中的 CSV 逐行解析

    我正在 Objective c 中解析 CSV 文件 该文件包含如下内容 line 40 Rising searches line 41 nabi avc Breakout line 42 stonewall 700 line 43 med
  • iOS:提高图像绘制速度

    我有一系列想要制作动画的图像 UIImageView支持一些基本的动画 但不足以满足我的需求 我的第一个方法是使用UIImageView并设置image当图像属性 这太慢了 速度慢的原因是图像的绘制 这让我感到惊讶 我以为瓶颈会加载图像 我
  • iphone NSDate 转换问题

    在我的 facebook 图表 Api 中 我正在获取这些数据 来自杰森 updated time 2011 05 17T14 52 16 0000 我正在使用此代码将其转换为有效的日期格式 NSDateFormatter df NSDat
  • Xcode 中的 iOS 9 警告 - 此文件设置为针对早于项目部署的版本进行构建。功能可能有限

    我刚刚将我的 Mac 更新到最新的操作系统 并将 Xcode 更新到最新版本 现在我收到此警告 但我不知道该由谁来删除它 也不知道它的真正含义是什么 有人可以向我解释一下吗 Thanks Select Main storyboard in
  • 个人帐户开发者之间的 Apple 开发/分发证书

    我一直在到处寻找有关处理证书的正确答案 想象一下以下帐户 Joe拥有个人 Apple 帐户 但他根本不会编码 他只是发布了该应用程序并将其称为自己的 Bob还有一个个人 Apple 帐户 Bob 是一位编码专家 Joe 付费让他开发他的第一
  • 我的游戏中应该有多少个视图控制器?

    我开始使用 spritekit 构建我的第一个游戏 现在我只有一个视图控制器来呈现开始屏幕场景 override func viewDidLoad super viewDidLoad let scene StartScreenScene C
  • iphone:如何停止快门动画?

    我有两个问题 1 我想知道如何在相机加载时停止快门动画 我正在使用 UIImagePickerController 我已经参考了堆栈溢出的许多答案 但没有成功 2 我在相机中有一个自定义按钮 使用cameraOverlayView并想通过单
  • WhatsApp 显示警告“此项目无法共享。请选择其他项目。”对于 iOS 应用程序。

    我正在开发一个 iOS 应用程序 在该应用程序中 我有社交共享功能 并且社交共享功能使用深度链接来共享 URL 该网址共享对于所有应用程序都运行良好 除了WhatsApp 它会显示一个警报弹出窗口 此项目无法共享 请选择其他项目 以下是我的
  • 为什么我的视图仍然以横向呈现?

    我的视图是由导航控制器控制的 因此我将导航控制器支持的方向设置为明确的纵向和纵向UpSideDown 这可以工作 但是如果调用视图时前一个视图处于横向状态 它将以横向方式呈现并保持横向状态 直到设备旋转 如何防止这种情况发生 这是我的代码
  • 分发内部业务 IOS 应用程序

    我遇到了 IOS 应用程序分发的一个令人困惑的部分 因此 我需要简单细分一下我的限制 即仅将我的应用程序分发给我的员工 同事或任何被视为 内部 的人 这是表明我不希望该应用程序出现在应用程序商店中的另一种方式 我的情况是我为几家公司开发 他
  • 苹果推送通知在生产中不起作用

    我们完全陷入困境 请帮忙 我和我的团队制作了一个 iPhone 应用程序 这是我们第一次在 iOS 上尝试 一切都很好 直到我们提交应用程序并在应用程序商店上可用为止 推送通知服务无法正常工作 我在网上搜索并尝试根据人们的建议仔细检查我们的
  • IPV6 快速可达性

    我是 swift 和 xcode 的新手 并且我的应用程序因 IPV6 而被拒绝 性能 2 1 当我们执行以下操作时 您的应用程序会在运行 iOS 9 3 5 并连接到 IPv6 网络的 iPad 和 iPhone 上崩溃 具体来说 当我们

随机推荐

  • 与“docker run -d”等效的远程 api 命令是什么?

    我正在尝试通过远程 api 调用 docker 命令 Docker 远程 api 似乎没有 分离模式 选项 http docs docker io en latest commandline command run http docs do
  • LinQ 查询多个表并提取数据

    我正在对 4 个表进行内连接查询 我必须提取数据并转换为字符串并将其放入数组中 var query from a in context as join b in context bs on a prikey equals b forkey
  • 如何连接数组列表中的字符串值

    我需要使用 concat 一次打印所有数组列表值 这是我的代码 ArrayList
  • git merge 不创建合并提交,没有 MERGE_HEAD [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 在 Linux 上使用 Git 1 8 1 2 我一直在基于以下两个不同的分支上工作master并行 称为 A 和 B 并且还创建
  • 是什么导致 pyspark 中的“unicode”对象没有属性“toordinal”?

    我收到此错误 但我不知道是什么原因造成的 我的 python 代码在 pyspark 中运行 堆栈跟踪很长 我只显示其中的一些 所有堆栈跟踪都没有显示我的代码 所以我不知道在哪里寻找 导致此错误的可能原因是什么 usr hdp 2 4 2
  • 什么是 GWT 字节缓存文件?

    作为背景 今天我的 GWT 托管模式运行速度神秘地减慢到几乎无法工作的程度 每当我暂停应用程序时 相关线程 主线程 代码服务器等 都会等待某些文件 I O 本机方法 挠头一阵子后 我尝试清理一下我的硬盘 然后我刚刚在我的用户中发现Temp文
  • 在 Mac OS 上安装 Rails 失败并出现多个错误

    我尝试在 Mac OS v10 10 4 系统上安装 Rails 但运行时失败brew install rbenv ruby build 错误是 Error Permission denied usr local etc openssl W
  • PRNG 需要线程安全吗?

    只要并发调用不会导致 seg v 或返回相同的值 就有什么理由可以防止竞争条件和数据损坏PRNGs http en wikipedia org wiki Pseudorandom number generator当这些错误的主要影响是不可预
  • 如何在不删除约束的情况下从表中删除

    我有一个问题 我需要在不删除或暂停约束的情况下删除信息 问题是否允许放弃约束很简单 但是我可以将值从 NULL 更改为 NOT NULL DELETE FROM SUPPLIER WHERE COUNTRY USA 然而 另一个表 PROD
  • 方向改变时片段 Backstack 不会恢复

    我有一个FragmentActivity 当用户浏览应用程序时 我将当前片段替换为用户选择的片段 并将事务添加到后台堆栈 一切正常 用户可以通过按后退按钮返回到之前的片段 当设备方向改变时就会出现问题 假设用户看到的第一个片段是 A 然后他
  • 使用最小起订量模拟静态类

    我正在 NUnit 的帮助下编写单元测试用例 并且有一些静态类需要模拟来运行测试用例 所以我们可以在以下帮助下模拟静态类吗MOQ模拟框架 如果有人有想法 请提出建议 有两种方法可以实现这一点 正如 PSGuy 所说 您可以创建一个代码可以依
  • Google Delegates 讨论日历框架/EventKit

    我一直假设 Google 代表可以通过 iCal 和 calendar app 查看 但我们开发人员无法通过日历框架或 EventKit 看到 这有改变吗 我也有这个问题 日历出现两次 取消选择代表 过了一会儿 一切都消失了 显然这是谷歌方
  • 如何检测服务器是否正在使用 SPDY

    有什么方法可以检测远程网站是否支持 SPDY 以及它是什么版本 我可以从命令行使用一些东西 比如 bash 脚本 尝试使用curl发送自定义用户代理标头 但无法获得任何对我有帮助的响应标头 这个想法是能够为任何域获取 SPDY true f
  • c# text/winForm 覆盖视频游戏,如 xfire、PIX、steam、fraps 等

    我知道有很多关于这个主题的帖子 但是几个月来我一直在寻找解决方案 我在谷歌上查了大约 300 个关于这个的帖子 我发现的唯一好的东西是一个 C 程序 它在 League 的窗口上绘制了一个彩色矩形 我对directx不是很熟悉 我的程序是用
  • 在 Python 中训练后,神经网络没有给出预期的输出

    我的神经网络在 Python 训练后没有给出预期的输出 代码有错误吗 有什么方法可以减少均方误差 MSE 吗 我尝试重复训练 运行程序 网络 但它没有学习 而是给出相同的 MSE 和输出 这是我使用的数据 https drive googl
  • 阻止内核处理绑定到原始套接字的 TCP 段

    根据http linux die net man 7 raw http linux die net man 7 raw raw socket socket AF INET SOCK RAW int protocol 是创建原始套接字的方法
  • MySQL 触发器将列设置为 max + 1 不起作用

    我在编写一个触发器来将一组用户 ID 的排名列设置为最大排名值加 1 时遇到困难 也许代码比我的描述更有帮助 CREATE TABLE saved listing saved listing id int 10 NOT NULL auto
  • 如何使用 Response 对象在 Symfony 2 中强制下载 .csv 文件?

    我正在使用 Symfony 2 制作一个 下载 控制器 其唯一目的是发送标头 以便我可以强制下载 csv 文件 但它无法正常工作 response new Response response gt headers gt set Conten
  • WindowsFormsHost 始终位于 WPF 元素的最顶层

    如何设置 windowsformshost 的 z index 它们并不总是位于 WPF 元素的顶部 根据 MSDN WindowsFormsHost 元素的布局注意事项 http msdn microsoft com en us libr
  • UICollectionView 在 unhighlightAllItems 上崩溃

    我收到了几份与 iOS 7 中的 UICollectionView 相关的崩溃报告 我无法始终如一地重新创建此崩溃 Exception Type SIGSEGV Exception Codes SEGV ACCERR at 0x91c439