我開發了一個應用程序,其中它使用GCD定時器和sqlite的數據庫能正常工作在iOS8上和IOS9但在IOS10失敗,它不會崩潰,但它凍結我使用的Xcode 8.1。 應用程序的工作流程是當我點擊按鈕計時器將開始在後臺運行,並不斷更新標籤以及表列表數據和插入相同的數據到sqlite數據庫。申請凍結在IOS 10
這裏我的問題是,當我繼續點擊按鈕來更新它的工作正常的數據,直到它插入50-60記錄後,它突然凍結並阻止用戶界面,以檢查我調試了我的代碼假設它因爲阻塞線程而失敗,但是我沒有找到任何解決方案來解決它,請提前幫助我解決我的問題。
Here is the output from my pause:
Error showing after pause and debug:
在按鈕的事件我想重裝該表,並在其中顯示記錄,以及將數據插入到SQLite數據庫和我有一個標籤,它的點擊了定時器數據在裏面。
dispatch_async(dispatch_get_main_queue(), ^{
self.lbltimer.text = [NSString stringWithFormat:@"%.4f", Timeinterval];
});
下面是我的代碼如何正在使用GCD定時器連續運行:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
self.aTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(ShowTime:) userInfo:nil repeats:YES];
});
我不能確切地說,但這必須是因爲你的異步線程不停止,並且在添加50-60個記錄之後,你有50-60個後臺線程。這阻止了用戶界面。我想你每次都在創建新線程,但是他們沒有完成。我只能通過查看代碼來說明這一點。 –