我有一個類「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