Вот как я отследил это.
Во-первых, я ходил повсюду, используя:
NSLog(@"%s", __PRETTY_FUNCTION__, nil);
, чтобы максимально приблизиться к катастрофе. Когда я это сделал, я заметил, что объект становится нулевым, чего не должно было быть.
В этот момент GDB с NSZombieEnabled и Instruments сообщили об отсутствии зомби.
Я добавил NSLog-инг в dealloc и освободил методы объекта, с которым у меня была проблема. Наконец, я смог получить достаточно смысла, чтобы добавить точку останова в эти методы и каждый раз просматривать трассировку стека, когда обнаружил, что релиз вызывается пулом авто-релиза.
Я наконец понял, что не удерживаю то, чем должен был быть. Как только я его сохранил, бинго, проблема решена.
Тем не менее, рекомендации NSZombieEnabled и Instruments помогли с некоторыми другими ошибками, которые возникли с тех пор, так что спасибо всем.