Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在objective-c中创建带有延迟参数的方法_Ios_Objective C_Nstimeinterval - Fatal编程技术网

Ios 在objective-c中创建带有延迟参数的方法

Ios 在objective-c中创建带有延迟参数的方法,ios,objective-c,nstimeinterval,Ios,Objective C,Nstimeinterval,我试图在objective-c中创建一个带有参数的方法,该参数是实际方法开始之前的秒数 我试图避免使用[自执行选择器:(SEL)with object:(id)afterDelay:(NSTimeInterval)]因为在我的方法中有延迟实际上会节省很多代码,因为我正计划向这个方法添加其他参数 该方法的示例: -(void) startMethodAfterArgumentDelay: (NSTimeInterval *)delay{ NSLog(@"perform action af

我试图在objective-c中创建一个带有参数的方法,该参数是实际方法开始之前的秒数

我试图避免使用
[自执行选择器:(SEL)with object:(id)afterDelay:(NSTimeInterval)]
因为在我的方法中有延迟实际上会节省很多代码,因为我正计划向这个方法添加其他参数

该方法的示例:

-(void) startMethodAfterArgumentDelay: (NSTimeInterval *)delay{
     NSLog(@"perform action after argument delay");
}
如何称呼它:

[self startMethodAfterArgumentDelay:3.0f];
任何帮助都将不胜感激

您可以使用并编写如下代码:

[self bk_performBlock:^(id obj) {
    //code
} afterDelay:delay];
您可以使用并编写如下代码:

[self bk_performBlock:^(id obj) {
    //code
} afterDelay:delay];

如果您不想像另一个答案所建议的那样使用任何第三方库,那么使用GCD就很容易实现。请注意,此方法是异步的,因此即使块的内容延迟,您的方法也会立即返回

- (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");
    });
}

如果您不想像另一个答案所建议的那样使用任何第三方库,那么使用GCD就很容易实现。请注意,此方法是异步的,因此即使块的内容延迟,您的方法也会立即返回

- (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");
    });
}

只需在之后将
延迟
馈送到
调度

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

只需在
之后将
延迟
馈送到
调度

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

明亮的在我将NSTimeInterval更改为float之后,它工作得完美无缺!谢谢你,太棒了!!在我将NSTimeInterval更改为float之后,它工作得完美无缺!非常感谢。