4

我的 iOS 应用程序经常在 [UIGestureRecognizer _delegateShouldReceiveTouch:] 处以平移手势崩溃。我正在使用平移手势来调整视图的大小和移动。在我的应用程序运行期间,该视图有多个实例。尽管崩溃经常发生,但它无法可靠地重现。这是崩溃日志的主要部分。

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000000
Crashed Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libobjc.A.dylib                 0x39de65b6 objc_msgSend + 22
1   UIKit                           0x33e4193e -[UIGestureRecognizer _delegateShouldReceiveTouch:] + 114
2   UIKit                           0x33d6f8b2 -[UITouchesEvent _addGestureRecognizersForView:toTouch:currentTouchMap:newTouchMap:] + 782
3   UIKit                           0x33d6f394 -[UITouchesEvent _addTouch:forDelayedDelivery:] + 212
4   UIKit                           0x33d6f2ac _AddTouchToEvent + 184
5   UIKit                           0x33d5d026 _UIApplicationHandleEvent + 5910
6   GraphicsServices                0x35a515a0 _PurpleEventCallback + 588
7   GraphicsServices                0x35a511ce PurpleEventCallback + 30
8   CoreFoundation                  0x31f2a170 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 32
9   CoreFoundation                  0x31f2a112 __CFRunLoopDoSource1 + 134
10  CoreFoundation                  0x31f28f94 __CFRunLoopRun + 1380
11  CoreFoundation                  0x31e9beb8 CFRunLoopRunSpecific + 352
12  CoreFoundation                  0x31e9bd44 CFRunLoopRunInMode + 100
13  GraphicsServices                0x35a502e6 GSEventRunModal + 70
14  UIKit                           0x33db12fc UIApplicationMain + 1116
15  TestApp                             0x0008adb4 0x1c000 + 454068
16  TestApp                             0x0001e40c 0x1c000 + 9228

有没有人有类似的在 [UIGestureRecognizer _delegateShouldReceiveTouch:] 崩溃的经历?

任何关于它如何发生的提示和理论都值得赞赏。

4

1 回答 1

3

看起来您分配给 UIGestureRecognizer 实例的委托已被释放。因此,手势识别器将对不再存在的对象调用委托方法。

当分配为委托的对象被释放时,请确保将手势识别器的委托设置为 nil。例如在 dealloc 方法中。

于 2013-08-22T08:50:05.107 回答