【问题标题】:Function execution timeout in objective c目标c中的函数执行超时
【发布时间】:2014-05-10 22:05:38
【问题描述】:

我有一个函数调用如下

NSData *data = [self createDummyData];

如果执行时间超过 1 秒,我希望 createDummyData 中断并返回 nil。我怎样才能实现它?

【问题讨论】:

  • 你为什么要那个?你在 1 秒内阻塞了主线程?
  • 这个调用发生在我的应用程序的后台线程上。
  • 如果createDummyData 具有迭代性质,只需检查每次迭代的时间

标签: ios objective-c


【解决方案1】:
  • 创建一个 NSOperationQueue。
  • 创建一个计时器。
  • 将操作添加到执行您希望它执行的操作的队列中。
  • 以未来 1 秒的触发日期启动计时器
  • 当定时器触发时,取消队列中的操作。

如果操作已完成,取消将无效。如果尚未完成,并且您已正确配置操作,则操作将停止。

【讨论】:

  • 如果操作当前正在执行,则不会取消操作。我们如何取消它?
  • 您需要将钩子放入您的 NSOperation 子类中以检查 isCancelled 事件并以这种方式处理它。
猜你喜欢
  • 2021-09-16
  • 1970-01-01
  • 2012-04-14
  • 1970-01-01
  • 2018-08-23
  • 1970-01-01
  • 1970-01-01
  • 2013-03-27
  • 1970-01-01
相关资源
最近更新 更多