GCDタイマーとSqliteデータベースを使用するアプリケーションを開発しました。IOS8 と IOS9 では問題なく動作しますが、IOS10 ではクラッシュせずにフリーズします。Xcode 8.1 を使用しています。アプリケーションのワークフローは、ボタンをクリックするとタイマーがバックグラウンドで実行され、ラベルとテーブルリストデータを更新し続け、同じデータを sqlite データベースに挿入することです。
ここで私の問題は、ボタンをクリックしてデータを更新し続けると、突然フリーズしてUIをブロックした後、50-60レコードを挿入するまで正常に動作するため、コードをデバッグしたことを確認するために、スレッドをブロックしているため失敗しますが、解決する解決策が見つかりませんでした。事前に問題を解決するのを手伝ってください。
ボタンイベントをクリックすると、テーブルをリロードしてレコードを表示しようとしているだけでなく、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];
});