博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[非凡程序员]协议,代理
阅读量:5822 次
发布时间:2019-06-18

本文共 1608 字,大约阅读时间需要 5 分钟。

hot3.png

#import <Foundation/Foundation.h>

cureProtocol : NSObject

#import "cureProtocol.h"

@implementation cureProtocol

//治病协议---新协议最好遵守基协议

sickDeleget <NSObject>

//协议的治疗方法,这里没有指定默认是一定实现的

-(void)cure;

@end

#import <Foundation/Foundation.h>

#import "cureSickProtocol.h"

@interface Doctor : NSObject<sickDeleget>//医生遵守协议

@property ( nonatomic , strong ) NSString * name ;

@end

#import "Doctor.h"

@implementation Doctor

//这个方法是协议中的,协议的方法是谁遵守协议谁实现方法,这里没有接口

-(void)cure{

    NSLog(@"医生开始治病~");

}

@end

#import <Foundation/Foundation.h>

#import "Doctor.h"

#import "Sick.h"

#import "Nurse.h"

int main(int argc, const char * argv[]) {

    @autoreleasepool {

        //实例化病人对象

        Sick *xiaoMing=[[Sick alloc]init];

        xiaoMing.name=@"小明";

          //实例化医生对象

        Doctor *aHua=[[Doctor alloc]init];

        aHua.name=@"医生";

        //实例化护士对象

        Nurse *xiaoBai=[[Nurse alloc]init];

        xiaoBai.name=@"护士";

        //设置病人委托对象

        xiaoMing.doctorDeleget=xiaoBai;

//        生病治病

        [xiaoMing ill];

        

        

    }

    return 0;

}

#import <Foundation/Foundation.h>

#import "cureSickProtocol.h"

@interface Nurse : NSObject<sickDeleget>

@property(nonatomic,strong)NSString *name;

@end

#import "Nurse.h"

@implementation Nurse

-(void)cure{

    NSLog(@"护士开始治病~");

}

@end

#import <Foundation/Foundation.h>

#import "cureSickProtocol.h"

#import "Doctor.h"

@interface Sick : NSObject

@property( nonatomic , strong ) NSString *name;

//设置代理属性,这个属性为id类型便于其他遵守此协议的对象传入,使代码更灵活

@property( nonatomic , strong )id<sickDeleget> doctorDeleget;

//病人方法,生病去看病

-(void)ill;

@end

#import "Sick.h"

@implementation Sick

-(void)ill{

    NSLog(@"%@说,医生我生病了啊。。。",_name);

//    病人通过代理委托医生看病

    [self.doctorDeleget cure];

}

@end

转载于:https://my.oschina.net/u/2501648/blog/526641

你可能感兴趣的文章
python 异常
查看>>
百度账号注销
查看>>
mysql-This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME 错误解决
查看>>
BIEE Demo(RPD创建 + 分析 +仪表盘 )
查看>>
Cocos2dx 3.0开发环境的搭建--Eclipse建立在Android工程
查看>>
基本概念复习
查看>>
重构第10天:提取方法(Extract Method)
查看>>
Android Fragment使用(四) Toolbar使用及Fragment中的Toolbar处理
查看>>
解决pycharm在ubuntu下搜狗输入法一直固定在左下角的问题
查看>>
多线程day01
查看>>
react-native 模仿原生 实现下拉刷新/上拉加载更多(RefreshListView)
查看>>
MySQL出现Access denied for user ‘root’@’localhost’ (using password:YES)
查看>>
通过Roslyn构建自己的C#脚本(更新版)(转)
查看>>
红黑树
查看>>
UIImagePickerController拍照与摄像
查看>>
python调用windows api
查看>>
第四章 mybatis批量insert
查看>>
Java并发框架——什么是AQS框架
查看>>
【数据库】
查看>>
Win配置Apache+mod_wsgi+django环境+域名
查看>>