gpt4 book ai didi

ios - NSTimer + NSInvocation导致iOS 7崩溃

转载 作者:行者123 更新时间:2023-12-03 15:53:26 24 4
gpt4 key购买 nike

在iOS 7上使用+[NSTimer scheduledTimerWithTimeInterval:invocation:repeats]时,我遇到了崩溃。这是完整的复制粘贴(带有变量重命名)。

SEL selector = @selector(callback);
NSMethodSignature *signature = [self methodSignatureForSelector:selector];
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
[invocation setTarget:self];
[NSTimer scheduledTimerWithTimeInterval:0.5 invocation:invocation repeats:NO];

当计时器触发时,我的应用程序崩溃并显示以下堆栈跟踪:

我认为也许其中的一个变量不再保留(即使NSTimer的文档中提到它保留了所有引用的参数),所以我强烈地将所有变量保留为 self。不幸的是,崩溃仍然持续。

提前致谢!

最佳答案

您缺少此行[self.invocation setSelector:selector];
这会工作

SEL selector = @selector(callback);
NSMethodSignature *signature = [self methodSignatureForSelector:selector];
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
[invocation setTarget:self];
[invocation setSelector:selector];
[NSTimer scheduledTimerWithTimeInterval:0.5 invocation:invocation repeats:NO];

- (void)callback
{
NSLog(@"triggered");
}

输出:
triggered

关于ios - NSTimer + NSInvocation导致iOS 7崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21008110/

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