代理协议

找女朋友案例

首先设置协议-》command+N -》Objective-C File

 

#import <Foundation/Foundation.h>

 

@protocol GFPorotocol <NSObject>

//必须实现

@required

-(void)wash;

-(void)cook;

//选择性实现

@optional

-(void)job;

 

 

@end

  

男的要找一个女朋友,添加了协议,然后寻找代理_girlFriend必须实现协议

#import <Foundation/Foundation.h>
#import "GFPorotocol.h"
@interface Boy : NSObject

@property (nonatomic , strong)NSString *name;
@property (nonatomic , assign)int age;
@property (nonatomic , assign)int money;

//寻找代理。要girlFriend遵守GFProtocol协议
@property (nonatomic , strong)id<GFPorotocol> girlFriend;

-(void)talkLove;

@end

  

 

@implementation Boy
-(void)talkLove{
    NSLog(@"aaa");
//    要_girlFriend遵守协议里面的wash 和 cook
    [_girlFriend wash];
    [_girlFriend cook];
    NSLog(@"bbb");
}
@end

  

女的应征,实现了协议

#import <Foundation/Foundation.h>
#import "GFPorotocol.h"
//添加协议 实现文件
@interface Girl : NSObject<GFPorotocol>

@property (nonatomic , strong)NSString *name;

@end

  

#import "Girl.h"

@implementation Girl

-(void)wash{
    NSLog(@"我会");
}
-(void)cook{
    NSLog(@"我也会");
}
@end

  ----------------实现

男的叫肥猫 年龄18 身家一穷二白

女的叫baby baby符合 肥猫的_girlFriend协议

恋爱成功

import "ViewController.h"
#import "Boy.h"
#import "Girl.h"
#import <limits.h>
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    
    Boy *b1 = [Boy new];
    b1.name = @"肥猫";
    b1.age = 18;
    b1.money =INT32_MAX;
    
    Girl *baby = [Girl new];
    baby.name = @"baby";
    
//    要baby做代理 要符合GFProtocol协议
    b1.girlFriend = baby;
//    恋爱成功
    [b1 talkLove];
}

  

 

posted on 2017-03-28 10:49  Veritas_Yang  阅读(125)  评论(0编辑  收藏  举报