У меня есть ситуация, когда у меня есть несколько слоев вложенных объектов в приложении на основе документов, которые должны знать информацию о определенной модели.Передача интерфейсов к объектам или использование делегирования в какао?
В частности, у меня есть NSTextView, NSLayoutManager и NSTypesetter, каждый из которых должен знать определенные свойства моей модели документа, чтобы правильно ее отобразить.
В настоящее время я подклассифицировал каждый из классов и дал им свойство, имеющее ссылку на мою модель. Ссылка передается из моего контроллера документа, в наследнике NSLayoutManager, а затем передана в наследнике NSTypesetter:
@implementation MyLayoutManager : NSLayoutManager {
@private
MyModel *model;
}
@property (retain) MyModel *model;
-(id)initWithModel:(MyModel *)model;
@end
@implementation MyTypesetter : NSATSTypesetter {
@private
MyModel *model;
}
@property (retain) MyModel *model;
-(id)initWithModel:(MyModel *)model;
@end
модели передается от контроллер-> MyLayoutManager-> MyTypesetter. Это кажется немного избыточным, возможно, слишком тесно связанным.
Будет ли образец делегата лучше? Если да, то каков наилучший способ установить это? У наборащик нет делегата, но у LayoutManager уже есть один. Должен ли добавить делегата в Typetter, переопределить делегат в LayoutManager? Или лучше просто придерживаться интерфейса моей модели?
Любое понимание будет оценено по достоинству. Благодарю.
Согласен. Я закончил настройку методов делегатов, которые просто попросили контроллер для данных, которые мне нужны для представления. – Donald