gpt4 book ai didi

ios - NSThread 不执行选择器

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

我有一个触发线程的静态对象,但每当线程尝试执行选择器时,我都会收到“[NSThread initWithTarget:selector:object:]: target does not implement selector”并且应用程序崩溃

这是我的代码:

@implementation currentUser
{
NSThread *engineThread;
}

-(void)MessageEngineStart{
NSLog(@"[MDS]:Message Engine Started!");
if(engineThread == nil){
engineThread = [[NSThread alloc]init];
}

if(!engineThread.isExecuting){
[engineThread performSelectorInBackground:@selector(job) withObject:nil];//here is where it crashes
NSLog(@"[MDS]: Thread Will perform job in background.");
}
else{
NSLog(@"[MDS]: Thread is being executed.");
}
[NSTimer scheduledTimerWithTimeInterval:30 target:self selector:@selector(MessageEngineStart) userInfo:nil repeats:NO];
}
-(void)job
{
//JOB
}

线程和作业都在同一个对象上。如果我只是使用一个

[NSThread detachNewThreadSelector:@selector(job) toTarget:self withObject:nil];

一切顺利...

我做错了什么?

最佳答案

你不需要为此创建线程,你应该只是调用

[self performSelectorInBackground:@selector(job) withObject:nil];

因为是您的类实现了 job 而不是 NSThread 类。当你打电话时

[NSThread detachNewThreadSelector:@selector(job) toTarget:self withObject:nil];

你正在使用 NSThread 调用 self 上的 job 所以它可以工作。

关于ios - NSThread 不执行选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28030646/

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