gpt4 book ai didi

ios - 添加和删​​除 NSNotificationCenter Observer - UIApplicationDidEnterBackgroundNotification - 正确的方法?

转载 作者:行者123 更新时间:2023-11-29 01:01:19 28 4
gpt4 key购买 nike

我有一个播放音频的 UIView,有一个 NSTimer 和进度条动画。

为简单起见,如果用户切换应用程序或接听电话,我希望所有进程都停止并自行重置。

我建议使用:

  1. 调用观察者 - 可能在 viewWillAppear 中:

     override func viewWillAppear(animated: Bool) {

    // set observer for WillEnterForeground
    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(WorkoutFullFace1Exercise7TVC.willEnterBackground), name: UIApplicationDidEnterBackgroundNotification, object: nil)


    ...}

  1. 停止相关任务:

    // Stop all audio, timer and animation if app enters background.
    func willEnterBackground() {

    myAudioPlayer.stop()
    myAudioPlayer.currentTime = 0

    swiftTimer.invalidate()
    swiftCounter = 60
    timerLabel.text = String(swiftCounter)


    pauseBtn.alpha = 1.0

    playBtn.alpha = 1.0

    stopBtn.alpha = 1.0

    currentCount = 0
    circularProgressView.animateFromAngle(circularProgressView.angle, toAngle: 0, duration: 0.5, completion: nil)
    }
  2. 解散观察者:

    override func viewWillDisappear(animated: Bool) {

    NSNotificationCenter.defaultCenter().removeObserver(self, name: UIApplicationDidEnterBackgroundNotification, object: nil)

    .... }

加载和关闭观察者的正确位置在哪里?我已经阅读了声明使用 viewDidLoad/deinitviewWillAppear/Disappear 等的线程。

任何人都可以阐明为我的场景推荐的内容,以及当前和将来可能保持“可用”的内容(编程世界中的语言和实践似乎变化很快)。

我使用的语法是否正确?

谢谢!

最佳答案

我觉得一切都是对的

Just make sure to call super implementation in each method. That can lead to some issues when you are subclassing things later

 override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated);
// other code
...}

// same for viewWillDisappear

关于ios - 添加和删​​除 NSNotificationCenter Observer - UIApplicationDidEnterBackgroundNotification - 正确的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36952747/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com