Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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_Multithreading - Fatal编程技术网

Ios 在Objective-C中,如何在特定时间后停止方法的执行?

Ios 在Objective-C中,如何在特定时间后停止方法的执行?,ios,objective-c,multithreading,Ios,Objective C,Multithreading,如何在iOS(Objective-C)下实现此逻辑 [obj方法1] [OCRlib imageScan]//运行我不确定如何停止imageScan方法,是否提供了一种方法来实现这一效果 要实现超时,可以使用调度组 [obj method1] dispatch_group_t group = dispatch_group_create(); dispatch_group_async(group, queue, ^{ [OCRlib imageScan] }); dispatch_t

如何在iOS(Objective-C)下实现此逻辑

[obj方法1]

[OCRlib imageScan]//运行我不确定如何停止
imageScan
方法,是否提供了一种方法来实现这一效果

要实现超时,可以使用调度组

[obj method1]

dispatch_group_t group = dispatch_group_create();

dispatch_group_async(group, queue, ^{
    [OCRlib imageScan]
});

dispatch_time_t when = dispatch_time(DISPATCH_TIME_NOW,NSEC_PER_SEC * timeout);
long status = dispatch_group_wait(group, when );

if (status != 0) {
    // block completed
    [obj method2]
}
else {
    // block failed to complete in timeout
}

不,在我的例子中,OCRlib不提供超时方法。谢谢,我将尝试。在Objective-C中,是否可以在单独的线程中运行imageScan方法并在10秒后终止此线程?
NSThread
具有一个
+exit
函数,该函数终止当前线程,但api建议避免使用此工具。你可以读更多。
[obj method1]

dispatch_group_t group = dispatch_group_create();

dispatch_group_async(group, queue, ^{
    [OCRlib imageScan]
});

dispatch_time_t when = dispatch_time(DISPATCH_TIME_NOW,NSEC_PER_SEC * timeout);
long status = dispatch_group_wait(group, when );

if (status != 0) {
    // block completed
    [obj method2]
}
else {
    // block failed to complete in timeout
}