Объекты в Objective-C создаются иначе, чем в C ++ или Java. Все переменные экземпляра инициализируются в ноль с помощью метода alloc
перед вызовом метода init
, поэтому к тому времени, когда будет вызван init
, будет слишком поздно для изменения переменной экземпляра const
. Очевидно, что создатели компилятора могли модифицировать компилятор для поддержки изменения переменной экземпляра const
в методе init
, но они этого не сделали.
Обычно вы просто делаете переменные вашего экземпляра @private
и выставляете их, используя методы доступа. Если вы не хотите, чтобы значение переменной экземпляра изменялось, не предоставляйте метод установки и не изменяйте переменную в реализации вашего класса.
Если вы откажетесь от поддержки 32-битной Mac OS X, вы можете поместить переменные вашего экземпляра в @implementation
вместо @interface
, что полностью защищает их от вмешательства других классов.