Objective-C ---代理和协议 (梳理整理)

来源:互联网 发布:linux smartctl 安装 编辑:程序博客网 时间:2024/06/04 18:39

delegate代理  协议protocol

用一个经典的例子来说明好了

对象worker1->Worker类

对象boss1   ->Boss类

协议WorkPro

@protocol workPro  协议,只

涉及到的方法修饰@required(默认,需要去实现,不然报警) @optional(可选,可以不去实现)  

-(void)moveBrick;  协议中的方法

@end

Worker类

(.m中)@interface Worker : NSObject<workPro>  Worker遵守协议

(.h中)

-(void)moveBrick{

    NSLog(@"move brick"); 

}

Boss类    

.m中     需要导入协议

@property (nonatomic,weak)id<workPro> delegate; 声明一个遵守协议内容的代理

  下面boss就可以解决搬砖了

  Worker *worker1 = [[Worker alloc]init];

    Boss *boss1 = [[Boss alloc]init];

    boss1.delegate = worker1; 找代理

    [boss1.delegate moveBrick];让代理去做事

运行结果 2016-05-22 11:31:09.631 12[1106:75224] move brick

 

协议中能不能声明成员变量???

答案是可以的;

上面的协议内容中加上

@property (nonatomic,strong)NSString*name;

Worker.m文件中去实现name的get  set方法就好了

1 0
原创粉丝点击