gpt4 book ai didi

ios - 检查 NSTimer 是否有效时崩溃?

转载 作者:行者123 更新时间:2023-11-29 12:19:23 28 4
gpt4 key购买 nike

我在控制台中收到此异常:

Error:

2015-06-25 23:12:01.841 Copyfeed for Mac[9512:584232]-[_NSViewLayoutAux invalidate]: unrecognized selector sent to instance 0x6000001657c0

检查我的计时器是否有效/以及使它们无效时。

if ([_staticTimer isValid]) {
[_staticTimer invalidate];
_selectionTimer =
[NSTimer scheduledTimerWithTimeInterval:2 target:self
selector:@selector(hideHUD) userInfo:nil repeats:NO];
}

if ([_selectionTimer isValid]) {
[_selectionTimer invalidate];
_selectionTimer =
[NSTimer scheduledTimerWithTimeInterval:2 target:self
selector:@selector(hideHUD) userInfo:nil repeats:NO];
}

这是我的新代码:

 if (_selectionTimer != nil) {
[_selectionTimer invalidate];
_selectionTimer = nil;
_selectionTimer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(hideHUD) userInfo:nil repeats:NO];
}

if (_staticTimer != nil) {
[_staticTimer invalidate];
_staticTimer = nil;
_selectionTimer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(hideHUD) userInfo:nil repeats:NO];
}


@property (strong )NSTimer *staticTimer;
@property (strong )NSTimer *selectionTimer;

现在当我调试僵尸对象时出现这个错误。

2015-06-26 00:39:45.523 Copyfeed for Mac[11191:824502] ***-[CFRunLoopTimer release]: message sent to deallocated instance 0x608000175e40

最佳答案

这里有几个潜在的问题。

if (_staticTimer != nil) {
[_staticTimer invalidate];
_staticTimer = nil;
_selectionTimer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(hideHUD) userInfo:nil repeats:NO];
}

您在这里所做的是覆盖 selectionTimer,即使它可能仍然包含一个仍在运行循环中调度的计时器。因此,如果您在此处重置属性,您还应确保在执行此操作之前调用 [_selectionTimer invalidate]

根据计时器启动时您在做什么,这可以解释 CFRunLoopTimer 上的崩溃。

在使用 NSTimer 时,一个对我非常有帮助的一般性建议:我建议将所有持有预定计时器的属性声明为 weak,因为它们无论如何都被运行循环保留。这样,您不需要在使它们无效后将它们显式设置为 nil,而是每次您想要摆脱它时只需调用 invalidate 即可一旦它被运行循环触发,它也会自动变为 nil,释放它可能持有的所有数据。请注意,这仍然需要您调用 invalidate 以防您想要取消计时器或在更换计时器之前调用,但您不再需要在这样做后将其设置为 nil .

关于ios - 检查 NSTimer 是否有效时崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31064808/

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