使用delay参数在objective-c中创建方法

时间:2015-03-14 17:35:16

标签: ios objective-c nstimeinterval

我正在尝试使用objective-c中的参数创建一个方法,该参数是实际方法开始之前的秒数。

我正在尝试避免使用[self performSelector:(SEL) withObject:(id) afterDelay:(NSTimeInterval)];,因为我的方法中有延迟实际上会为我节省大量编码,因为我打算在此方法中添加其他参数。

方法示例:

-(void) startMethodAfterArgumentDelay: (NSTimeInterval *)delay{
     NSLog(@"perform action after argument delay");
}

以及如何调用它:

[self startMethodAfterArgumentDelay:3.0f];

非常感谢任何帮助!

3 个答案:

答案 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
});