2017-09-05 76 views
1

您好我發現如果我添加runloop當應用程序進入後臺就會造成XPC連接中斷Runloop總是導致XPC連接中斷?

例如,我的應用程序連接到BLE裝置,如果用戶讓應用程序進入後臺了一段時間,我將退出該應用程序比釋放連接

這裏是我的代碼

func applicationDidEnterBackground(_ application: UIApplication) { 
     isInBackground = true 
     timer = Timer.scheduledTimer(timeInterval: 300 , target: self, selector: #selector(self.quitApp), userInfo: nil, repeats: false) 
     RunLoop.current.add(timer, forMode: .commonModes) 
     RunLoop.current.run() 
    } 

func quitApp() { 
    if isInBackground == true { 
     print("QUIT APP") 
     exit(0) 
    } 
} 

func applicationWillEnterForeground(_ application: UIApplication) { 
     timer.invalidate() 
     isInBackground = false 
} 

但每次我進入前景時,我發現,如果我刪除runloop在

func applicationDidEnterBackground 

該應用程序將運行

func applicationDidBecomeActive 
or 
func applicationWillEnterForeground 

但是,如果我添加了Runloop,就會造成

XPC連接中斷

我不明白什麼是Runloop和應用程序生命之間的關係循環?此外,如果我讓應用程序進入足夠的時間,應用程序將退出,再次打開應用程序一切都很好。

回答

0

XPC是使用運行循環實現的,因此篡改運行循環會中斷您的XPC連接並不奇怪。

+0

謝謝!也許我需要避免使用runloop –

相關問題