Не удается решить эту проблему, [хеш UIViewController] отправляется в контроллер представления, который был правильно освобожден, он был помещен в навигацию, а затем извлечен, а затем в некоторый случайный момент позже это происходит. Похоже, класс UIViewController имеет некоторую статическую коллекцию контроллеров представления, где ссылка на старый контроллер все еще сохраняется, несмотря на удаление.
206, stop reason = EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0)
frame #0: 0x0225cdee CoreFoundation`___forwarding___ + 206
frame #1: 0x0225ccb2 CoreFoundation`_CF_forwarding_prep_0 + 50
frame #2: 0x017e1cd1 Foundation`objectHash + 33
frame #3: 0x017e3444 Foundation`hashProbe + 47
frame #4: 0x017f5d03 Foundation`-[NSConcreteHashTable hashGrow] + 217
frame #5: 0x017e3407 Foundation`-[NSConcreteHashTable addObject:] + 136
frame #6: 0x00f98089 UIKit`+[UIViewController setViewController:forView:] + 101
frame #7: 0x00f94c71 UIKit`-[UIViewController setView:] + 542
frame #8: 0x017ecf30 Foundation`_NSSetUsingKeyValueSetter + 77
frame #9: 0x017ecedb Foundation`-[NSObject(NSKeyValueCoding) setValue:forKey:] + 287
frame #10: 0x01807d50 Foundation`-[NSObject(NSKeyValueCoding) setValue:forKeyPath:] + 393
frame #11: 0x010ef71a UIKit`-[UIRuntimeOutletConnection connect] + 106
frame #12: 0x022f7dea CoreFoundation`-[NSObject performSelector:] + 58
frame #13: 0x022617f1 CoreFoundation`-[NSArray makeObjectsPerformSelector:] + 273
frame #14: 0x010ee26e UIKit`-[UINib instantiateWithOwner:options:] + 1178
frame #15: 0x00f941fc UIKit`-[UIViewController _loadViewFromNibNamed:bundle:] + 286
frame #16: 0x00f94779 UIKit`-[UIViewController loadView] + 302
Похоже, что закрытый метод [UIViewController setViewController: forView:], вызываемый из [UIViewController setView:], сохраняет каждый контроллер представления в словаре уровня представления - возможно, контроллер представления. И в какой-то момент позже, при добавлении другого VC в коллекцию, он должен расти, что вызывает перефразирование всех значений в коллекции, вызывая вызов [UIViewController hash] для delloced VC. Теперь вопрос, почему ссылка VC все еще там? Может быть, потому что представление все еще живо без делегата контроллера.
ОБНОВЛЕНИЕ: Я могу подтвердить, что представление контроллера представления все еще живо после того, как VC был вытолкнут, несмотря на то, что VC был разрушен. Хотя я не совсем уверен, почему.