Если вам не нужна отмена, есть хороший шанс, что простой немоделированный @property лучше. При явном моделировании свойства как переходного, основными различиями являются:
- Установка свойства помечает объект как грязный, даже если на самом деле ничего не будет сохранено;
- Свойство очищается, когда объект превращается в ошибку;
- При объединении изменений могут происходить странные вещи в зависимости от выбранной вами стратегии объединения.
Некоторые эксперименты по разработке семантики переходного смоделированного свойства могут быть найдены в https://web.archive.org/web/20160423093331/http://www.2pi.dk/tech/cocoa/transient_properties.html Якобом Стоклундом Олесеном. Поскольку это умирающая ссылка на archive.org, я приведу несколько отрывков:
"Переходное свойство ... Вы должны думать о нем как о чем-то , чье значение в постоянном хранилище равно нулю. "
"Итак, для чего нужны переходные свойства? ... [для] любого свойства, которое вам не нужно хранить, но вы хотите отменить поддержку."
"Другое использование ... - это кэширование свойств, которые не могут быть сохранены. Типичными примерами являются взаимосвязи между хранилищами и атрибуты с неподдерживаемыми типами. Перед сохранением вы преобразуете свойство в нечто, что можно сохранить и запишите его в двоичный атрибут 'shadow'. "
«Лучше представить временные свойства как представляющие« нечто, равное нулю в постоянном хранилище », чем обычные« причудливые переменные экземпляра с отменой ». *
Хорошая статья, и я бы хотел, чтобы Якоб оставил ее.