     func destroy() {
         PKLog.trace("destory player")
         self.nonObservablePropertiesUpdateTimer?.invalidate()
+        self.nonObservablePropertiesUpdateTimer == nil
         self.removeObservers()
-        avPlayerLayer = nil
-        _view = nil
-        onEventBlock = nil
+        self.avPlayerLayer = nil
+        self._view = nil
+        self.onEventBlock = nil
     }
     
     @available(iOS 9.0, *)

        
        avPlayerLayer = AVPlayerLayer(player: self)
        _view = PlayerView(playerLayer: avPlayerLayer)
    
        self.onEventBlock = nil
        self.nonObservablePropertiesUpdateTimer = nil
    }

    private func startOrResumeNonObservablePropertiesUpdateTimer() {
        PKLog.trace("setupNonObservablePropertiesUpdateTimer")
        
        self.nonObservablePropertiesUpdateTimer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(self.updateNonObservableProperties), userInfo: nil, repeats: true)
    }
    
    /**
