У меня есть класс «MyCLController» со свойством «dataSource», которое является делегатом источника данных для класса «MyCLController». Класс «MyCLController» обрабатывает события местоположения и т. Д., И этому классу требуется несколько методов для запроса и обновления нескольких таблиц базы данных sqlite. По этой причине я создал протокол «MyCLControlerDataSourceDelegate», который объявляет, какие методы класса делегата источника данных должны реализовывать:
@protocol MyCLControlerDataSourceDelegate <NSObject>
@required
+ (NSArray *)getAllRegions;
+ (void)saveVisitTimeForRegionID:(NSInteger);
-(void)someInstanceMethod;
@end
А вот объявление свойства делегата источника данных:
@property (nonatomic, assign) id <MyCLControlerDataSourceDelegate> dataSource;
После выделения/инициации моего «MyCLController» я связываю его свойство dataSource с объектом класса типа, который реализует протокол MyCLControlerDataSourceDelegate.
Я хотел бы спроектировать «MyCLController» как слабосвязанный, чтобы ему не нужно было знать, какой тип свойства класса «dataSource». Все хорошо, при вызове методов экземпляра, например:
[self.dataSource someInstanceMethod];
А как насчет вызова методов класса? Я знаю, что методы класса должны называться [ClassName classMethod], но это сделало бы «MyCLController» менее независимым.