У меня есть повторяющийся NSTimer, который я аннулирую вручную за некоторое время до того, как освобождаю объект, которому принадлежит обратный вызов, который вызывается таймером. Я проверяю, что, когда я делаю недействительным таймер, обратный вызов больше не вызывается. Когда объект освобождается, через мгновение я получаю EXC_BAD_ACCESS. Сбой связан с тем, отменю ли я таймер или нет, т. Е. Если я его не аннулирую, то сбоев не будет.
Кто-нибудь знает, почему это может происходить? Я не понимаю, почему таймер пытался получить доступ к обратному вызову для объекта, который был удален, что, как кажется, происходит. Я в недоумении, как отладить это дальше. CallCack просто говорит:
#0 0x02f05c93 in objc_msgSend
#1 0x00000001 in ??
#2 0x02d255fa in CFRunLoopRunSpecific
#3 0x02d248a8 in CFRunLoopRunInMode
#4 0x037de89d in GSEventRunModal
#5 0x037de962 in GSEventRun
#6 0x00863372 in UIApplicationMain
#7 0x00002e40 in main at main.m:13
ОБНОВЛЕНИЕ: Я определил, что это не таймер, а утечка, возникшая из-за того, что мой родительский объект вызвал dealloc (таймер без аннулирования препятствовал вызову dealloc). Тем не менее, было бы полезно услышать совет о том, как отлаживать вещи, когда я ударился об стену с помощью стека вызовов, если это вообще возможно, поэтому я оставлю этот вопрос без ответа.