У меня есть класс «MyCLController» со свойством «dataSource», который является делегатом источника данных для класса «MyCLController». Класс «MyCLController» обрабатывает события местоположения и т. Д., И этому классу нужно несколько методов для запроса и обновления нескольких таблиц sqlite DB. По этой причине я создал протокол «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 менее независимым.