我想调用方法
-(void) fooWithObject:(MyObject *)obj;
在给定时间(NSDate
实例)
不阻塞主线程。
最好的方法是什么?我见过NSTimer
,performSelector
和NSOperation
,但每次阅读都让我更加困惑。
重要的:
干杯!
答案 0 :(得分:1)
performSelector:withObject:afterDelay
可用于此目的。延迟是相对的,因此您需要计算所需日期和当前时间之间的差异。像这样的东西(在iPad上直接输入答案 - E& OE):
- (void) fooWithObject:(MyObject *)obj onDate:(NSDate *)onDate
{
[self performSelector:@selector(fooWithObject:)
withObject:obj
afterDelay:MAX(0, [onDate timeIntervalSinceNow])
];
}
请注意,如果传入日期是过去的话,则使用MAX - 延迟将为0,因此选择器将“尽快”执行。