我有一个类“MyCLController”,其属性为“dataSource”,它是“MyCLController”类的数据源代理。 “MyCLController”类处理位置事件等,这个类需要几种方法来查询和更新几个sqlite数据库表。出于这个原因,我已创建“MyCLControlerDataSourceDelegate”协议,声明,数据源委托类应该实现什么样的方法:如何在自定义委托属性上调用类方法?
@protocol MyCLControlerDataSourceDelegate <NSObject>
@required
+ (NSArray *)getAllRegions;
+ (void)saveVisitTimeForRegionID:(NSInteger);
-(void)someInstanceMethod;
@end
而这里的数据源委托财产申报:
@property (nonatomic, assign) id <MyCLControlerDataSourceDelegate> dataSource;
allocing后/ INITING我“MyCLController”,我将它的dataSource属性与一个实现MyCLControlerDataSourceDelegate协议的类型的对象连接起来。
我想设计“MyCLController”是松散耦合的,所以它不必知道什么类的“dataSource”属性是。当调用实例方法时,一切都很好,例如:
[self.dataSource someInstanceMethod];
但是如何调用类方法?我知道类方法应该被称为[ClassName classMethod],但是这会使“MyCLController”不那么独立。
他们为什么是类方法?如果您有一个实例,您必须为委托做一个实例,那么似乎所有的委托方法都应该是实例方法。 – jrturton
因为,我正在开展一个项目,我只需要执行我的任务,而不是制止项目的工作约定。所有数据库类及其查询方法都是类方法,这些类不是单例(除了使用数据库单例),它们只是查询数据库。实际上,我不需要分配/初始化任何这些类。我从用户的角度来看这个需求,而不是从角度的objective-c及其限制。只是好奇是否有可能以其他方式做。 – Centurion
作为一名编码人员,我也可能被认定为使用objective-c和iOS的用户,并从这个角度来看,我觉得这对我来说很方便。但如果这是不可能的,我会放弃:) – Centurion