【问题标题】:Stop method's execution - Swift停止方法的执行 - Swift
【发布时间】:2016-07-14 20:53:41
【问题描述】:

当我的 watchKit 应用程序进入后台时,它会触发委托方法 applicationWillResignActive。方法文档说它可以用来暂停正在进行的任务。

我有一个正在进行的方法,我想通过使用外部方法来停止或破坏。我该怎么做?

示例

func method1(){
// performing some actions
}

func breakMethod1(){
// running this method can stop (break) the execution of method1
}

【问题讨论】:

  • 您是否尝试过使用NSNotifications 来触发不同的事件?
  • @dokun1 在这种情况下我如何实现 NSNotification?我之前尝试过执行方法,但不是为了停止它们。
  • 如果我正确理解你的问题,你说调用breakMethod1() 会阻止它,是吗?如果是这种情况,请使用NSNotification 来触发它。不是这样吗?
  • @dokun1 调用 breakMethod1 应该停止执行 method1。你能展示一个实现吗?
  • 你能edit your question 包含method1 的实际实现吗?

标签: ios swift methods delegates watchkit


【解决方案1】:

当然,这是假设您的应用已构建为 breakMethod1() 肯定会取消发生在 method1() 中的操作。

您应该在method1() 的开头为NSNotification 设置一个观察者,如下所示:

let notificationCenter = NSNotificationCenter.defaultCenter()
notificationCenter.addObserver(self, selector: "breakMethod1", name: UIApplicationWillResignActiveNotification, object: nil)

并且为了清理,您还应该在它被触发后将其删除,如下所示:

notificationCenter.removeObserver(self, name: UIApplicationWillResignActiveNotification, object: nil)

【讨论】:

  • 这正是问题所在 - 我不太确定如何以取消正在进行的方法的方式构建该方法
  • 那么这是一个更大的问题。您可能需要考虑完全改写/重新提出您的问题,因为这更像是一个应用程序架构问题。这取决于触发该方法时您要完成的工作。您还应该考虑您的应用程序的状态,以及当应用程序退出活动状态时您如何能够保留它。当然,这都是在黑暗中拍摄,因为我不知道你的方法是做什么的。
猜你喜欢
  • 1970-01-01
  • 2013-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-02
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
相关资源
最近更新 更多