#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];
}
내 퀘스트 ion 1. is : 객체가 다른 객체의 위임자 인 경우 다른 객체 (위자는 참조가 있음) 만 호출 한 위임자가 구현 한 메서드입니까?
- 내가 청소를하고 나하고 무엇을 : 나는 내가 메도
changeActionForObjectWithId:
가 바로 다운로드 관리자에 의해 호출한다 보여 주었다 코드의 예를 들어,이 뜻이나 나는이 같은 내 클래스의 inernal에서 사용할 수 있습니다 대리인 패턴을 사용하는 나쁜 설계?
분명합니다.
답변 해 주셔서 감사합니다. 하지만 다른 peopole 코드에서 예를 들어 호출 - (UITableViewCell *) tableView : (UITableView *) tableView cellForRowAtIndexPath : (NSIndexPath *) indexPath 데이터 원본 메서드를, 그리고 그것은 내 상황과 동일하다고 생각합니다. ? – samir
"위임자에게 몇 가지 정보를 요청하십시오"라는 범주에 해당합니다. 그리고'UITableView * '를 전달한다는 것을 알 수 있습니다. 'StoreDisplayer * '를 넘기고 있지 않습니다. "하지만 StoreDisplayer에 대한 포인터가 필요 없습니다"라고 생각할 수도 있습니다. 하지만 그때 당신은 그 패턴을 따르지 않고 있습니다. 그리고 당신의 질문은 훌륭한 디자인에 대한 것이 었으며 대의원 패턴을 따른 것입니다. –
답장을 보내 주셔서 감사 드리며 @ marco의 답변에 대해 어떻게 생각하십니까? 나는 마녀 대답이 정확하고 그것을 받아들이는지 모른다 : 미안하다. – samir