Вам нужно вызывать метод init…
только для объектов, которые вы выделили, вызывая alloc
. alloc
резервирует только пространство, необходимое для объекта, создавая объект в унифицированном виде.
У объекта неинициализированный все переменные экземпляра установлены на ноль, ноль или эквивалент для типа. За исключением счетчика сохранения, установленного на 1.
Все другие методы, которые возвращают объект, гарантированно возвращают полностью инициализированный объект. alloc
является исключением.
Вы никогда не должны вызывать метод init…
для объекта, который уже инициализирован. Простое правило - использовать соотношение 1: 1 между alloc
- init…
, вот и все.