Если вы хотите добавить переменные в существующий класс, используйте Подкласс.
Если вы хотите просто добавить свои собственные методы в существующие классы, используйте Категории.
Категории могут быть использованы, чтобы объявить либо методы экземпляра класса или методы, но как правило, не пригодны для объявления дополнительные свойства. Допустимый синтаксис включает объявление свойства в интерфейсе категории , но невозможно объявить дополнительную переменную экземпляра в категории. Это означает, что компилятор не будет синтезировать любую переменную экземпляра, а также не будет синтезировать любое свойство методов доступа. Вы можете написать свои собственные методы доступа в реализации категории , но вы не сможете отслеживать значение для этого свойства, если оно уже не сохранено исходным классом .
Единственный способ добавить традиции имущественным при поддержке нового экземпляра переменной в существующий класс использовать расширение класса, как описано в разделе «Class Extensions Extend the Internal Implementation.»
Какова цель за не допуская переменные в Категории?
Метода внутри Категории добавляется к классу в время выполнения, это означает, что компилятор не будет синтезировать любой переменный экземпляр, и не будет синтезировать любые методы доступа к свойствам.
С другой стороны, при использовании подкласса класс скомпилируется одновременно с расширением класса.
source
Почему вниз голос ????? –