Ios 在Objective-C中,如何在特定时间后停止方法的执行?
如何在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
[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
}