我正在尝试使用objective-c中的参数创建一个方法,该参数是实际方法开始之前的秒数。
我正在尝试避免使用[self performSelector:(SEL) withObject:(id) afterDelay:(NSTimeInterval)];
,因为我的方法中有延迟实际上会为我节省大量编码,因为我打算在此方法中添加其他参数。
方法示例:
-(void) startMethodAfterArgumentDelay: (NSTimeInterval *)delay{
NSLog(@"perform action after argument delay");
}
以及如何调用它:
[self startMethodAfterArgumentDelay:3.0f];
非常感谢任何帮助!
答案 0 :(得分:2)
如果您不想使用任何第三方库作为建议的其他答案,这很容易使用GCD dispatch_after()来实现。请注意,此方法是异步的,因此即使块的内容被延迟,您的方法也会立即返回。
- (void)startMethodAfterArgumentDelay:(NSTimeInterval)delay
{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delay * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
NSLog(@"perform action after argument delay");
});
}
答案 1 :(得分:1)
您可以使用BlocksKit,然后编写如下代码:
[self bk_performBlock:^(id obj) {
//code
} afterDelay:delay];
答案 2 :(得分:1)
只需将delay
提供给dispatch_after
。
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delay * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void) {
// do whatever
});