我有一个“MyCLController”类,其属性“dataSource”是“MyCLController”类的数据源委托。 “MyCLController”类处理位置事件等,此类需要多种方法来查询和更新多个sqlite DB表。出于这个原因,我创建了“MyCLControlerDataSourceDelegate”协议,声明了数据源委托类应该实现的方法:
@protocol MyCLControlerDataSourceDelegate <NSObject>
@required
+ (NSArray *)getAllRegions;
+ (void)saveVisitTimeForRegionID:(NSInteger);
-(void)someInstanceMethod;
@end
这是datasource委托属性声明:
@property (nonatomic, assign) id <MyCLControlerDataSourceDelegate> dataSource;
在分配/启动我的“MyCLController”之后,我将其dataSource属性与实现MyCLControlerSourceDelegate协议的类型类的对象相链接。
我想将“MyCLController”设计为松散耦合,这样就不必知道“dataSource”类的类是什么类型。调用实例方法时,一切都很好,例如:
[self.dataSource someInstanceMethod];
但是如何调用类方法呢?我知道类方法应该被称为[ClassName classMethod],但这会使“MyCLController”不那么独立。
答案 0 :(得分:-1)
其中一个解决方案是在对象上调用“class”方法。它将获取对象的类名,然后我们可以调用它的类方法,例如:
NSArray *allRegions = [[self.dataSource class] getAllRegions];