新しいスレッドで関数を呼び出す多くの方法を試した後、以下のコードのみが機能しました
[NSThread detacNewThreadSelector:@selector(temp:) toTarget:self withObject:self];
以下は機能しませんでした:
NSThread *updateThread1 = [[NSThread alloc] initWithTarget:self selector:@selector(temp:) object:self];
NSThread *updateThread1 = [[NSThread alloc] init];
[self performSelector:@selector(temp:) onThread:updateThread1 withObject:self waitUntilDone:YES];
NSTimer
関数でセレクターを呼び出したり実行したりしようとすると、timer:
機能しません コードの下を検索します
int timeOutflag1 = 0;
-(void)connectCheckTimeOut
{
NSLog(@"timeout");
timeOutflag1 = 1;
}
-(void)temp:(id)selfptr
{
//[selfptr connectCheckTimeOut];
NSLog(@"temp");
//[NSTimer scheduledTimerWithTimeInterval:5 target:selfptr selector:@selector(connectCheckTimeOut) userInfo:nil repeats:NO];
[selfptr performSelector:@selector(connectCheckTimeOut) withObject:nil afterDelay:5];
}
- (IBAction)onUart:(id)sender {
protocolDemo1 *prtDemo = [[protocolDemo1 alloc] init];
//NSThread *updateThread1 = [[NSThread alloc] initWithTarget:self selector:@selector(temp:) object:self];
//[self performSelector:@selector(temp:) onThread:updateThread1 withObject:self waitUntilDone:YES];
// [updateThread1 start];
[self performSelector:@selector(temp:) withObject:self afterDelay:0];
while(1)
{
NSLog(@"Whieloop");
if(timeOutflag1)
{
timeOutflag1 = 0;
break;
}
if([prtDemo isConnected])
break;
}
}
関数で使用する[self performSelector:@selector(connectCheckTimeOut) withObject:nil afterDelay:5];
と正常に動作しますが、一時的には動作しません。onUart
Timeout
printf