Главная » iPhone, Objective-C, Программирование для iOS и MacOS » Владельцы объектов и ARC Objective-C

0

Для решения этой проблемы была разработана концепция владения объектами. Когда объект является  объектной переменной  экземпляра,  говорят, что  он  является владельцем объекта, на который указывает переменная.

С другой стороны, объект знает, сколько владельцев он имеет в настоящий момент. Например, на приведенной выше диаграмме экземпляр Person имеет трех владельцев: объект Employee и два объекта Child. Когда количество владельцев объекта уменьшается до нуля, объект считает, что он больше никому не нужен, и удаляет себя из памяти.

Подсчетом владельцев каждого объекта занимается механизм ARC (Аutomated

Reference Соuntiпg) – в Objective-C эта функция появилась недавно.

До выхода Xcode 4.2 управлять подсчетом владельцев приходилось вручную, на что уходило много времени и усилий. (О ручном подсчете владельцев о том, как он работал, рассказано  в последнем  разделе  главы 20.  Впрочем, во  всем  коде, приведенном в книге, предполагается, что вы используете ARC.)

Давайте немного доработаем проект BMIТime и посмотрим, как подсчет владельцев работает на практике. Компании довольно часто следят за тем, какие материальные ресурсы были выделены тому или иному работнику. Мы создадим класс Asset, а в каждом объекте Employee будет храниться массив с описанием ресурсов, доверенных данному работнику.

Рис 19.3. Работники и ресурсы

Подобные иерархии часто называются отношениями «родитель/потомок»: родитель (экземпляр Employee) содержит коллекцию потомков (коллекция NSMutableArray с объектами Asset).

Источник: Аарон Хилегас, «Objective-C. Программирование для iOS и MacOS», 2012 г.

По теме:

  • Комментарии