如何使用Object参数将NSTimeInterval对象传递给detachNewThreadSelector?

You*_*sef 2 cocoa objective-c nstimeinterval nsthread

我仍然是Objective C语法的新手,所以我可能会过度复杂,但我似乎无法弄清楚如何将NSTimeInterval传递给线程.

我想启动一个线程,它休眠从主线程发送的x秒参数,如下所示:

[NSThread detachNewThreadSelector:@selector(StartServerSynchThread) toTarget:self withObject:5];

- (void) StartServerSynchThread:(NSTimeInterval *)sleepSecondsInterval {

    [NSThread sleepForTimeInterval:sleepSecondsInterval];

}
Run Code Online (Sandbox Code Playgroud)

但是编译器一直给我一个语法错误.我不确定应该怎么做.任何帮助,将不胜感激.谢谢!

Dav*_*ong 12

这与@ Georg的答案几乎完全相同,但使用了正确的类型.:)

如果将NSTimeInterval装入NSNumber(子类NSValue),则可以将其传递给:

[NSThread detachNewThreadSelector:@selector(startServerSynchThread:) 
                         toTarget:self 
                       withObject:[NSNumber numberWithDouble:myTimeInterval]];

- (void) startServerSynchThread:(NSNumber *)interval {
  [NSThread sleepForTimeInterval:[interval doubleValue]];
}
Run Code Online (Sandbox Code Playgroud)