[非凡程序员]协议,代理

#import <Foundation/Foundation.h>atom


@interface cureProtocol : NSObjectspa


@end .net





#import "cureProtocol.h"3d


@implementation cureProtocol代理


@end orm





//治病协议---新协议最好遵照基协议对象

@protocol sickDeleget <NSObject>接口

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

-(void)cure;it


@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

相关文章
相关标签/搜索