2013-10-05 2 views

ответ

3

Расширение класса делает то, что он говорит; он расширяет объявление класса. В отличие от категорий расширения класса могут добавлять объявления @property, которые будут автоматически синтезированы при компиляции @implementation класса.

Единственным требованием является то, что все объявления расширения класса объявляются либо #import до компиляции @implementation.

I.e. класс @implementation- это реализация расширения.

+0

Я все еще немного растерялся. Скажем, я расширяю NSObject и добавляю свойство someProperty. Могу ли я затем инициализировать SomeArray из любого NSObject, где я импортировал расширение через self.someArray? Если бы я хотел иметь метод doSomethingToTheProperty - должен ли я определять этот метод в каждой реализации, где я импортирую расширение? Или, в качестве альтернативы, я могу использовать расширение для добавления свойств, а затем категорию для создания методов для этих свойств (при условии, что я импортирую расширение). Я мог бы сделать вещи более запутанными, чем они. – JoshDG

+1

@JoshDG, потому что вы не обеспечили реализацию NSObject, вы не можете расширять его с помощью расширения класса. вы можете рассматривать подкласс как альтернативу. – justin

+1

Расширения класса используются в классе, который вы реализуете, чтобы разделить интерфейс класса на несколько частей. Они не полезны для классов, которые вы не реализовали. –

Смежные вопросы