我还是Objective C语法的新手,所以我可能会过度复杂,但我似乎无法弄清楚如何将NSTimeInterval传递给线程。
我想启动一个休眠从主线程发送的x秒参数的线程,如下所示:
[NSThread detachNewThreadSelector:@selector(StartServerSynchThread) toTarget:self withObject:5];
- (void) StartServerSynchThread:(NSTimeInterval *)sleepSecondsInterval {
[NSThread sleepForTimeInterval:sleepSecondsInterval];
}
但编译器一直给我一个语法错误。我不确定应该怎么做。任何帮助,将不胜感激。谢谢!
答案 0 :(得分:12)
这与@ Georg的答案几乎完全相同,但使用的是正确的类型。 :)
如果您将NSTimeInterval装入NSNumber
(NSValue
的子类),则可以将其传入:
[NSThread detachNewThreadSelector:@selector(startServerSynchThread:)
toTarget:self
withObject:[NSNumber numberWithDouble:myTimeInterval]];
- (void) startServerSynchThread:(NSNumber *)interval {
[NSThread sleepForTimeInterval:[interval doubleValue]];
}
答案 1 :(得分:2)
object
参数具有id
类型,这意味着只能传递类型对象。整数,例如您要传递的5
,以及NSTimeInterval
(实际上只是typedef
的{{1}}),是基本类型,而不是类类型。< / p>
您可以使用double
作为包装,或者传递NSNumber
。