Базовые Свойства анимации и Подсчет ссылок
Q: После чтения на свойствах в Objective C, я заметил, что много свойств, объявленных Базовым использованием Анимации значение по умолчанию, «присваиваются» семантический. Однако, когда я установил свойство с помощью Базового объекта Основы, что все еще сохраняется объект. Почему?
A: Базовая Анимация не указывает семантику сильной ссылки на своих атрибутах свойства, потому что те только допустимы для типов Objective C. Например:
Перечисление 1 ошибка сборки происходит при попытке эффективно использовать 'сильный' атрибут для Базового типа Основы.
@property (strong) CGColorRef myProperty; |
"Error: Property with 'retain (or strong)' attribute must be of object type" |
Базовая Анимация использует много типов данных, предоставленных Базовой Графикой, полученной Базовые типы данных Основы, такие как CGColorRef и CGPathRef. Так как ошибка выше была бы отмечена, если бы эти свойства были объявлены с атрибутами, зарезервированными для объектов Какао, объявления свойства в контексте опускают атрибуты.
Для обеспечения ожидаемого поведения Базовая Анимация реализует сильные ссылки или семантику копии, где это необходимо, для всех типов данных, которые это представляет, но это делает это под капотом. Таким образом для предотвращения утечек памяти при использовании этих свойств Вы должны Базовые объекты Основы находившиеся в собственности выпуска после того, как они будут присвоены. Пример присвоения цвета фона CALAYER ниже:
Перечисление 2 , Должным образом присваивающее цвет фона.
CGColorRef color = CGColorCreateGenericRGB(1.0, 0.5, 0.25, 1.0); |
layer.backgroundColor = color; |
CFRelease(color); |
Для получения дополнительной информации о свойствах посмотрите Заявленное Свойство.
Для руководства по использованию Базовой Анимации см. Базовое Руководство по программированию Анимации.
Для получения дополнительной информации об Автоматическом Подсчете ссылок, посмотрите Переход к Информации о версии ARC.
История версии документа
| Дата | Примечания |
|---|---|
| 16.05.2013 | Незначительный довольный обновление. |
| 24.11.2008 | Новый документ, описывающий расхождение между объявлениями свойства в Базовой Анимации и фактическом поведении. |