Это зависит от объекта.Если у него есть изменяемая / неизменяемая пара (например, NSString
/ NSMutableString
), тогда ваш метод получения может вернуть неизменяемую версию.
В противном случае вы не можете управлять поведением других объектов - после того, как вы вернули объект, вы не сможете управлять им со стороны объекта, который его первоначально предоставил.
Если выЕсли вы обеспокоены тем, что другой объект может изменить объект, возвращаемый из метода получения, и тем самым изменить свойство, хранящееся в исходном объекте, вам следует вместо этого вернуть копию объекта.
Пример:
ОбъектA имеет свойство изменяемой строки, объект B запрашивает эту изменяемую строку, получатель напрямую возвращает переменную экземпляра, поддерживающую свойство.
Объект B затем изменяет строку - свойство объекта A также было изменено, поскольку оба объекта имеют указатель на одну и ту же изменяемую строку.
В этом случае вы бы вернули копию объекта, а не сам объект.Если ваш объект является пользовательским, вы должны реализовать протокол NSCopying
, чтобы разрешить это.
Еще одно замечание - объявление свойства как доступного только для чтения означает, что не будет создан метод доступа к установщику, т. Е. objectA.property = newValue;
приведет к ошибке компилятора.