gpt4 book ai didi

iphone - 子类化 UIApplication 以覆盖 sendEvent 导致崩溃

转载 作者:技术小花猫 更新时间:2023-10-29 10:49:47 29 4
gpt4 key购买 nike

我正在尝试子类 UIApplication 来捕获所有触摸事件,这用于查看用户是否离开。无论如何,它在您第一次启动该应用程序时效果很好。如果你把它放在后台并再次打开它 2 次,它就会崩溃。我不知道是什么原因造成的。我在 [super sendEvent:event] 上获得 EXEC_BAD_ACCESS;

我的子类 MyUI:

@implementation MyUI

- (void)sendEvent:(UIEvent *)event {
[super sendEvent:event]; // <-- EXEC_BAD_ACCESS

if (event.type == UIEventTypeTouches) {
UITouch *touch = [event allTouches].anyObject;
if (touch.phase == UITouchPhaseBegan) {
// Calling some methods
}
}
}
@end

主.m

int main(int argc, char *argv[])
{
NSString* appClass = @"MyUI";
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, appClass, nil);
[pool release];
return retVal;
}

最佳答案

首先调用父类(super class)方法是否有原因?如果你正在拦截,你应该最后调用它。

这可能是你的问题。我还重写了 sendEvent 以拦截我的应用程序的所有事件并且没有任何问题。

如果您首先调用 super 方法,它会将它传递给所有 UIResponders,这些 UIResponders 最终可能会吃掉您的事件,从而导致 EXEC_BAD_ACCESS。此外,正如 DavidNeiss 建议的那样,删除 super 调用下方的行。如果您仍然收到错误的访问信号,则可能是另一个 View 或 Controller 导致它。您需要堆栈跟踪以找出它的位置。

关于iphone - 子类化 UIApplication 以覆盖 sendEvent 导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5852872/

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