Объявить интерфейс внутри файла реализации (Objective-C)

В последней версии XCode (4.3) я видел, что предопределенные шаблоны (такие как шаблон Master / Detail), в которых объявление интерфейса выполняется в файле .m. Например, в файле MyFile.h есть:

@interface MyFile

@property (nonatomic, retain) NSString *someProp;

@end

И в файле MyFile.m есть:

@implementation MyFile

@interface MyFile {
    NSString * anotherProp;
}

- (id) init...

Почему это сделано таким образом? Почему еще один объект не объявлен в файле MyFile.h?

заранее спасибо

Ответы на вопрос(1)

Решение Вопроса

Ну, это не объявлено так, но так:

@interface ClassName() {

    Declarations;

}

Methods;

@end

Они называются расширением класса. Они похожи на категории, но могут быть объявлены только в реализации класса, а не в каком-либо другом классе. Использование расширений заключается в том, чтобы повторно объявить свойство public или readwrite, а также объявить более новые, если это необходимо. просто позволяет вам объявлять свойства и переменные в местах, отличных от @interface, так что имя extensios.

Это было сделано для решения проблемы с категориями, поскольку они делают методы общедоступными, а способность классов скрывать данные компенсируется, но расширение класса эффективно расширяет основной интерфейс класса, к которому объявленные методы предъявляют те же требования, что и методы, объявленные в общедоступный первичный интерфейс класса.

Ваш ответ на вопрос