gpt4 book ai didi

cocoa-touch - 获取 UIGestureRecognizer 消息的已释放对象

转载 作者:行者123 更新时间:2023-12-03 00:37:47 24 4
gpt4 key购买 nike

我有一个 View ,在收到双击时,会向根 Controller 发送通知,根 Controller 又会删除并释放该 View 。

问题在于, View 释放后,它收到另一个延迟的 GestureRecognizer 事件。

以下是来自“Instruments”的信息:

Category        Event Type  RefCt   Timestamp   Address      Size   Responsible Library Responsible Caller
UIScrollView Zombie -1 00:06.166 0x55496a0 0 UIKit -[UIGestureRecognizer _updateGestureWithEvent:]


0 CoreFoundation ___forwarding___
1 CoreFoundation _CF_forwarding_prep_0
2 UIKit -[UIGestureRecognizer _updateGestureWithEvent:]
3 UIKit -[UIGestureRecognizer _delayedUpdateGesture]
4 UIKit _UIGestureRecognizerUpdateObserver
5 UIKit _UIGestureRecognizerUpdateGesturesFromSendEvent
6 UIKit -[UIWindow _sendGesturesForEvent:]
7 UIKit -[UIWindow sendEvent:]
8 UIKit -[UIApplication sendEvent:]
9 UIKit _UIApplicationHandleEvent
10 GraphicsServices PurpleEventCallback
11 CoreFoundation CFRunLoopRunSpecific
12 CoreFoundation CFRunLoopRunInMode
13 GraphicsServices GSEventRunModal
14 GraphicsServices GSEventRun
15 UIKit UIApplicationMain
16 ipadapp main /Users/test/Projects/app/ipadapp/main.m:7
17 ipadapp start

UIScrollView 似乎在正确的时间发布。

问题是为什么会出现这个额外的手势事件。

最佳答案

我不知道我是否遇到了完全相同的问题,但这是我的做法:

1- Enable Zombie mode在 Xcode 中获取精确的消息,以确保您正在查看正确的位置。之后您将收到如下消息:[OverViewgestureRecognizerFailed:]:消息发送到已释放的实例0x53d6d00

2- 既然您知道了确切的问题,请在删除该对象之前停用该对象上的手势:

    // I have to remove the gestures, because a GesturerecongizerFailed can arrive after the view has been deallocated
for (UIGestureRecognizer* gesture in self.overView.gestureRecognizers) {
NSLog(@"Desactive un gesture");
gesture.delegate = nil ;
gesture.enabled = NO;
}
// Remove the view from the display
[self.overView removeFromSuperview];
self.overView = nil;

这应该可以解决问题。

[编辑]另一个对我有用的解决方案:不要对手势识别器使用“自动释放”。大多数情况下,您可以在将识别器添加到 View 后直接释放它。

关于cocoa-touch - 获取 UIGestureRecognizer 消息的已释放对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2819869/

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