gpt4 book ai didi

objective-c - IB 的 GestureRecognizers 在模拟内存警告时使应用程序崩溃

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:32:15 26 4
gpt4 key购买 nike

我有一个从 Storyboard 中提取的手势识别器,它工作正常而且很漂亮...

除了我模拟内存不足警告时。那时,它因错误而崩溃:

[UISwipeGestureRecognizer retain]: message sent to deallocated instance 0x8627330

为了让它不崩溃,我要做的是将手势识别器设置为强属性,并在 viewdidload 中将自动生成的设置注释掉为 nil:

//[self setSwipeGestureRecognizer:nil];

我随机得到这个解决方案,我希望有人能解释这里发生了什么?

最佳答案

迷人。当你第一次发布这个时,我假设你的代码有问题,但鉴于你的澄清评论,我决定自己尝试一下。我遇到了与您相同的行为。

具体来说,我在 Interface Builder 中创建了一个手势识别器并将其链接到适当的 IBAction 并确认它工作正常,即使我向另一个 View Controller 推送和弹出也是如此。但是,如果我在该辅助 View Controller 处模拟内存警告,则在返回原始 View Controller 后立即收到与您相同的崩溃。

这很容易补救。看起来你有办法,或者你可以完全绕过 Interface Builder,并在代码中创建你自己的手势识别器,你不会有这个问题,例如,

- (void)viewDidLoad
{
[super viewDidLoad];

// Do any additional setup after loading the view.

UIPanGestureRecognizer *recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
[self.view addGestureRecognizer:recognizer];
// [recognizer release]; // uncomment in non-ARC project
}

如果您像这样手动创建它,则在模拟内存警告后返回 View 时不会发生崩溃。这就是您的解决方案。

幸运的是,看起来这个问题已经在下一版本的 Xcode 和 iOS 的测试版中得到了修复。

关于objective-c - IB 的 GestureRecognizers 在模拟内存警告时使应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11279820/

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