Objective c 与CALayer有关的奇怪的崩溃日志

Objective c 与CALayer有关的奇怪的崩溃日志,objective-c,ios,uikit,crash,calayer,Objective C,Ios,Uikit,Crash,Calayer,今天我在开发一个应用程序时遇到了一个奇怪的bug。 问题在于目录模块。在每一页的上方都有一个小的黑色区域,因为这一页没有填满100%的屏幕。点击该区域将导致崩溃 我的崩溃日志如下所示: Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Codes: KERN_PROTECTION_FAILURE at 0x2fd00fec Crashed Thread: 0 Thread 0 name: Dispatch queue: com.appl

今天我在开发一个应用程序时遇到了一个奇怪的bug。 问题在于目录模块。在每一页的上方都有一个小的黑色区域,因为这一页没有填满100%的屏幕。点击该区域将导致崩溃

我的崩溃日志如下所示:

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_PROTECTION_FAILURE at 0x2fd00fec
Crashed Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   QuartzCore                      0x35d812ac CA::Transaction::ensure_compat() + 0
1   QuartzCore                      0x35da2648 CALayerMapGeometry_(CALayer*, CALayer*, void (*)(void*, CA::Mat4<double> const&), void (*)(void*, CA::Mat4<double> const&), void*) + 28
2   QuartzCore                      0x35da25f8 -[CALayer convertPoint:fromLayer:] + 52
3   UIKit                           0x32457018 -[UIView(Geometry) convertPoint:fromView:] + 68
4   UIKit                           0x32456d40 -[UIView(Geometry) hitTest:withEvent:] + 172
5   UIKit                           0x32456d50 -[UIView(Geometry) hitTest:withEvent:] + 188
(...)repeat the line above^ until it reached 511
511 UIKit                           0x32456d50 -[UIView(Geometry) hitTest:withEvent:] + 188
异常类型:EXC\u坏访问(SIGSEGV)
异常代码:0x2fd00fec的内核保护失败
崩溃线程:0
线程0名称:调度队列:com.apple.main-Thread
线程0崩溃:
0 QuartzCore 0x35d812ac CA::事务::确保兼容()+0
1 QuartzCore 0x35da2648 CALayerMapGeometry(CALayer*,CALayer*,void(*)(void*,CA::Mat4常量&),void(*)(void*,CA::Mat4常量&),void*)+28
2夸脱芯0x35da25f8-[CALayer转换点:fromLayer:][52
3 UIKit 0x3245718-[UIView(几何体)转换点:fromView:+68
4 UIKit 0x32456d40-[UIView(几何体)命中测试:withEvent:][172
5 UIKit 0x32456d50-[UIView(几何体)命中测试:withEvent:][188
(…)重复^1上方的行,直到到达511
511 UIKit 0x32456d50-[UIView(几何体)命中测试:withEvent:][188
更糟糕的是,xcode很快就崩溃了。 debug navigator向我展示了一些更奇怪的东西:然后继续列出一个巨大的列表,如下所示:

我真的不知道从哪里开始。。。 catalog模块很旧,经过了很好的测试,类似的事情以前从未发生过。 我知道有很多变量和事情可能会影响这个应用程序,但如果有人能在这方面透露一点信息,我将非常感激
正如我所说的,我甚至不知道如何开始处理这个问题,它看起来不像是你经常遇到的“访问一个解除分配的对象”、“内存泄漏”或其他问题,你在某处有一个无限递归。您是否在某个地方覆盖了
-[UIView hitTest:withEvent:]
?这将是一个很好的起点。

您在某个地方有一个无限递归。您是否在某个地方覆盖了
-[UIView hitTest:withEvent:]
?这将是一个很好的起点。

无限递归可能更准确地描述了这里的错误,但是是的,我看到了错误的方式重写事物时的确切行为。当你需要一个
[super something]
时,确保你没有使用
[self something]
。是的,递归更合适……修复了。不,“hitTest:withEvent”在应用程序的任何地方都没有使用,但我确实有一些CALayer实例需要检查。无限递归听起来确实有道理,我将首先检查应用程序中的所有迭代。谢谢你们的建议,伙计们@BBog,你找到问题所在了吗?我知道这是与递归相关的崩溃。但是,是什么导致了递归呢。“我也有同样的问题。”苏兰不幸的是,从那时起已经很久了,我忘了。我所记得的是,我试图重写所有令人不快的代码——无限递归可能更准确地描述了这里发生的错误,但是,是的,我看到了以错误的方式重写时的确切行为。当你需要一个
[super something]
时,确保你没有使用
[self something]
。是的,递归更合适……修复了。不,“hitTest:withEvent”在应用程序的任何地方都没有使用,但我确实有一些CALayer实例需要检查。无限递归听起来确实有道理,我将首先检查应用程序中的所有迭代。谢谢你们的建议,伙计们@BBog,你找到问题所在了吗?我知道这是与递归相关的崩溃。但是,是什么导致了递归呢。“我也有同样的问题。”苏兰不幸的是,从那时起已经很久了,我忘了。我所记得的是,我试图重写所有有问题的代码