Я использую Swift 1.2UITableView/UIScrollView делегат не получает установлен в ноль, когда ViewController deinits
У меня есть UIViewController, который является делегатом в UITableView. Когда я выхожу из этого VC с помощью NavigationController, UIScrollView внутри UITableView пытается вызвать мой VC после его освобождения и вызывает сбой EXC_BAD_ACCESS.
Почему? Разве ARC не должен разбираться в этом?
Чтобы исправить это, я должен написать:
deinit {
self.tableView.delegate = nil
}
раздражающий. Я что-то делаю глупо?
Делегат подключен к раскадровке, что ничуть не странно. На самом деле я не могу думать о чем-то ненормальном о моей установке.
UITableView Делегат заявление:
// Swift
unowned(unsafe) var delegate: UITableViewDelegate?
// Obj-C
@property(nonatomic, assign) id<UITableViewDelegate> delegate
Чтобы добавить правильный ответ Алекса, это фиксируется в прошивке 9 очевидно:
https://twitter.com/zwaldowski/status/627158943035457536 https://twitter.com/steipete/status/608387828221898754
Дайте некоторый контекст - полную функцию и точную строку, в которой происходит сбой. Где/Почему UITableView чувствует, что у него все еще есть событие для обработки? – BaseZen