アプリがバックグラウンドに入ると、アプリ内のすべてのタイマーを無効にします。実際には、タイマーは 1 つだけです。私はこれを次の方法で行います:
- (void) invalidate_timer {
if( self.timer != nil ) {
[self.timer invalidate];
self.timer = nil; <-- App crashes on this line
}
}
ただし、アプリは次の行でクラッシュすることがあります (常にではありません)。私は完全に混乱しています.どうしてそれが可能ですか?
エラーは次のとおりです: スレッド 1: EXC_BAD_ACCESS (コード =1 , 0xeblablabla ;) )
編集:
- (void) invalidate_timer {
if( self.timer != nil ) {
[self.timer invalidate];
//self.timer = nil; <-- doing this, and the app no longer crashes
}
}
これはどれほどクレイジーですか?
編集 2: これは、スタック トレースの上部です。
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0:
0 libsystem_kernel.dylib 0x31985848 __kill + 8
1 BlackLane2 0x0015f85e fatal_signal_handler (PLCrashSignalHandler.m:103)
2 libsystem_c.dylib 0x3408d7e6 _sigtramp + 42
3 BlackLane2 0x0013b586 -[FutureTourDetailsVC invalidate_timer] (FutureTourDetailsVC.m:159)