我有一個這樣的協議:使用清潔委託模式
#import <Foundation/Foundation.h>
@protocol StoreDisplayerDelegate <NSObject>
-(void) changeActionForObjectWithId:(NSString *)objectID ;
@end
和我有符合先例協議StoreDisplayerDelegate
@interface ShelfVC : UIViewController :<StoreDisplayerDelegate>
....
@implementation ShelfVC
...
- (void)viewDidLoad {
...
DownloadManager *manager = [DownloadManager sharedInstance];
[manager setStoreDisplayerDelegate:self];
....
}
#pragma mark StoreDisplayerDelegate methods
-(void) changeActionForObjectWithId:(NSString *)objectID {
......
}
@end
而且在我的代碼callass(在同一個班)有時候我會打電話給代表們做某些事情,例如:
- (void)anOtherMethod{
[self changeActionForObjectWithId:nil];
}
我的任務離子 1. is:當object是另一個對象的委託時,委託所實現的方法是否只由另一個對象調用(女巫有它的參考)?我的意思是這一點,例如,在代碼中,我已經表明應梅索德changeActionForObjectWithId:
只需下載管理器調用或者我可以用它在我的課像這樣的立式珠磨機:
- 是我在做什麼清洗或使用Delegate模式的糟糕設計?
我希望它很清楚。
感謝您的回答。但我已經看到在其他peopole代碼中,y調用例如 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath數據源方法,我認爲它與我的情況是一樣的,沒有? – samir
屬於「向代表詢問一些信息」的類別。你會注意到它通過'UITableView *'。你沒有通過'StoreDisplayer *'。你可能會想「但我不需要指向StoreDisplayer的指針」。但是你沒有遵循這個模式。你的問題是關於良好的設計和遵循委託模式。 –
感謝您的回答,您對@ marco的回答有什麼想法?我很抱歉,我不知道女巫的回答是否正確,並接受它:) – samir