UITableViewController
управляет управлением памятью для своего собственного tableView
объекта, поэтому теоретически вам не нужно об этом беспокоиться.
Как сказал Алекс, определенно плохо не звонить [super dealloc]
; это утечка памяти, чтобы оставить это без внимания.
Чтобы решить эту проблему, вам нужно выяснить, почему ваше табличное представление живет дольше, чем ваш контроллер представления (это то, что дает вам эту ошибку FREED (id)). Можно предположить, что вы покидаете представление в иерархии представлений, но освобождаете контроллер. Желаемое поведение при переходе от одного контроллера представления к другому - удалить старое представление из иерархии представления, вызвав [oldView removeFromSuperview]
и , а затем , освободив контроллер представления, если вы хотите освободить его при все. Причина, по которой removeFromSuperview
важна, состоит в том, что суперпредставления всегда сохраняют свои подпредставления, поэтому может быть поэтому ваш tableView так нежить.
Если ваше приложение не потребляет много памяти, может быть проще всего просто выделить ваши контроллеры представлений (не освобождать их) - это решит вашу проблему, хотя на самом деле это не решает проблему того, что ваше табличное представление дольше чем ожидалось, что может быть признаком неэффективного кода, который было бы неплохо очистить.