В ноте, переопределение типу Ивара в @property
заявлении также может быть полезно, если вы хотите объявить свойство как неизменного типа из Ивара, например:
@interface MyClass : NSObject
{
NSMutableArray *myArray;
}
@property (retain) NSArray *myArray;
В этот экземпляр, ivar фактически хранится как NSMutableArray
, поэтому его можно изменить во время жизненного цикла объекта.
Однако это внутренняя деталь, и если вы не хотите, чтобы «реклама» была изменчивой (изменяемой), вы можете сделать тип свойства неизменным типом - в этом случае NSArray
.
Хотя это фактически не останавливает другой код с использованием возвращаемого массива как изменчивого, это хорошее соглашение и уведомляет другой код о том, что он не должен лечить его таким образом.
Я не знал об этом. Это довольно аккуратно. Это позор, который он не обнаруживает на отладчике. –