委託方 = 老闆
代理方 = 員工
協議 = 合同bash
委託方傳遞信息或者事件到代理方,代理方執行相關操做。ui
翻譯:老闆把工做材料和工做內容交給員工,員工去幹活。atom
委託方聲明協議,並持有委託對象屬性,調用代理方執行操做。spa
翻譯:
1. 老闆提供合同
2. 員工簽名
3. 老闆在他的公司里加上這號人
4. 老闆分配工做
5. 員工幹活翻譯
MyView.h
//委託方聲明協議
@protocol MyViewDelegate <NSObject>
//可選實現方法
@optional
-(void)optionalFunc;
//必須實現方法
@required
-(void)requiredFunc;
@end
複製代碼
MyViewController.m
//代理方遵照協議
@interface MyViewController () <MyViewDelegate>
@property(nonatomic,strong)MyView * myView;
@end
複製代碼
MyView.h
//委託方聲明代理屬性 注意要用weak修飾
@interface MyView : UIView
@property(nonatomic,weak)id<MyViewDelegate> delegate;
@end
複製代碼
MyViewController.m
@implementation MyViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self.view addSubview:self.myView];
}
-(MyView *)myView{
if (!_myView) {
_myView = [[MyView alloc] initWithFrame:self.view.bounds];
_myView.backgroundColor = [UIColor whiteColor];
//持有代理
_myView.delegate = self;
}
return _myView;
}
@end
複製代碼
MyView.m
//調用代理 調用前判斷是否有方法實現
if ([self.delegate respondsToSelector:@selector(requiredFunc)]) {
[self.delegate requiredFunc];
}
複製代碼
MyViewController.m
//實現協議方法
- (void)requiredFunc{
NSLog(@"requiredFunc");
}
複製代碼