Когда следует выпускать модель (представленный объектом) соответствующего UIViewController - PullRequest
0 голосов
/ 11 апреля 2010

В AppKit у нас есть «представленный объект», доступный через NSViewController, этот представленный объект обычно устанавливается в ModelController или модель, которую отображает NSViewController, это прекрасно работает с привязками, так как вы просто устанавливаете новый представленный объект, и детали модели обновляются в представлении, НО в случае iPhone (UIKit, без привязки к Какао) такого представленного объекта нет в UIViewController, поэтому мне интересно знать несколько вещей: -

  1. Каков наилучший / рекомендуемый способ привязки модели к UIViewController ?, желательно не поддерживать партию IBOutlets и вызывает установщики, чтобы обновить измененные данные модели для отображения в представлении.
  2. Как / Когда должна быть выпущена соответствующая модель UIViewController?
  3. Когда вызывается -[UIViewController dealloc] в типичном приложении для iPhone.

Я ищу архитектуру некоторых классов, чтобы координаты UIViewController между представлением и моделью, но в то же время освобождали модель, когда это вообще не нужно.

ТИА.

1 Ответ

0 голосов
/ 11 апреля 2010

Это большая проблема с привязками Какао, она скрывает множество очень простых вещей.

dealloc вызывается, когда счет сохранения достигает 0. Для контроллера представления, который произойдет, когда другие контроллеры выпустили его, и у него нет других сохранений. Вам не стоит беспокоиться об этом, если вы делаете управление памятью в соответствии с правилами.

Создайте свойство для вашего объекта модели или контроллера модели, если вы хотите перейти на этот уровень абстракции. Правильно используя свойство (как всегда используя self.model для получения назначений), освободите объект в вашей реализации dealloc и установите для него значение nil в viewWillUnload. Свойства создают средства доступа для вас.

Что касается выпуска вашей модели, когда в ней нет необходимости, то вышеописанное поможет вам - вам не нужно ее обдумывать. Если вы создаете массивные структуры данных, то вы можете рассмотреть возможность их создания в viewWillAppear и разделения на viewWillDisappear в дополнение к вышеприведенному.

Вам понадобится больше розеток и клеевого кода, чем с привязками; но вам придется писать намного меньше кода для управления своими привязками. Помните, что iPhone должен быть менее мощным устройством, а вы должны заботиться о ресурсах - и API UIViewController дает вам возможность сделать это.

...