Вы можете использовать функцию под названием «категории», которая позволяет расширять существующий класс путем добавления к нему свойств и методов.
Как правило, вы используете пустую категорию в файле .m вашего класса для частных методов и свойств и определяете отдельную именованную категорию во внешнем файле .h для защищенных членов. Категории на самом деле довольно интересны тем, что позволяют переопределить существующих свойств. Так, например, вы можете определить свойство только для чтения в вашем .h файле:
@interface Whatever {
NSObject *aValue;
}
@property (nonatomic,retain,readonly) NSObject *aValue;
@end
И затем вы можете настроить чтение и запись для личного использования в пустой категории внутри вашего файла .m:
@interface Whatever()
@property (nonatomic,retain) NSObject *aValue;
@end
Вы можете найти больше о категориях здесь .