0

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

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

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

TIA.

ответ

0

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

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

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

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

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

+0

Спасибо Paull, я хочу, чтобы мои методы соответствовали KVC-KVO, так что в случае, если iPhone добавит привязки в будущем, будет меньше работать для переключения. Другая вещь, о которой я думал, - это добавить какое-то кэширование, чтобы каждый раз удалять удаленные серверы (скажем, в viewWillDisappear и viewWillAppear запускать некоторые txns для получения данных), просто думая о некоторой абстрактной архитектуре, которую позже можно использовать другие тоже ... Просто мысли .... Thx. – user313786