Вы можете использовать категорию, если хотите переопределить свойство. Вот пример:
У меня есть PDFFileChooserViewController
с PDFFileModel
и PDFFilesDataSource
и некоторая логика, связанная с этими свойствами.
@class PDFFileModel, PDFFilesDataSource;
@interface PDFFileChooserViewController : UIViewController
@property (nonatomic, strong) PDFFileModel* selectedModel;
@property (nonatomic, strong) PDFFilesDataSource*dataSource;
@end
Затем я бы хотел добавить определенный ViewController для выбора файлов из Dropbox, но в моей модели есть несколько дополнительных полей, например dropboxPath
, и мой DropboxDataSource
получает файлы другим способом. Поэтому я решил создать категорию и переопределить следующие свойства:
#import "PDFFileChooserViewController.h"
@class DropboxFileModel,DropboxDataSource;
@interface DropboxViewController : PDFFileChooserViewController
@end
@interface DropboxViewController (ModelCategory)
@property(nonatomic, strong) DropboxFileModel* selectedModel;
@property(nonatomic, strong) DropboxDataSource* dataSource;
@end
Обратите внимание, что эта категория будет видна внутри DropboxViewController только там, где я могу манипулировать этими свойствами, но другие классы видят только интерфейс суперкласса