Вы спрашиваете:
нужно ли ячейке хранить свою ссылку?
Нет. Фактически это блокирует вас в ссылочной семантике, и вы могли бы рассмотреть семантику значений для объекта Person
. Я также думаю, что это мутит модель собственности. Кому сейчас принадлежит этот Person
объект?
И даже если вы были привержены эталонной семантике и хотели использовать этот шаблон для обнаружения изменений Person
, будьте осторожны, так как ваш шаблон didSet
- это только половина решения. Тип Person
является изменяемым, и вы обнаруживаете, когда объект заменяется новым Person
объектом, но не обнаруживается, когда изменяются отдельные свойства Person
. Если вы собираетесь пойти по этой дороге didSet
с изменяемыми ссылочными типами, вы также можете добавить KVO для соответствующих свойств.
Этот шаблон влечет за собой довольно тесную связь объектов вида и объектов модели. Как и предполагали другие, вы могли бы рассмотреть другие способы решения этой проблемы и / или уменьшения нагрузки на контроллер представления.
Если вы ищете автоматическое обновление ячейки, когда объект Person
видоизменяется (и, возможно, наоборот), вы можете рассмотреть шаблоны привязки, например, предлагаемые библиотеками, такими как RxSwift , Бонд и т. Д.
Я бы также отослал вас к презентации Дейва Делонга A Better MVC , которая проведет вас через соображения, если вы не хотите отказываться от MVC, но выясните способы работы с ним или Среда Шаблоны архитектуры iOS , представляющая собой введение в другие варианты.