1.声明
2.设置代理人
//
// Girl.h
// OC_07类的扩展
//
// Created by dllo on 15/7/24.
// Copyright (c) 2015年 dllo. All rights reserved.
//
#import <Foundation/Foundation.h>
// 1.声明一份协议
// protocol协议的关键词
@protocol Marry <NSObject>
// 协议内容
// 协议方法的声明
@required // 必须实现的方法, 默认的是这个方法
- (void)makeMoney;
@optional // 是可以选择执行的方法
- (void)cook;
@end
@interface Girl : NSObject
// 2.设置代理人的属性
@property(nonatomic, assign)id<Marry>delegate;
// 两个人结婚之后,协议才正式的生效
- (void)getMarry;
@end
3.让代理人去执行协议的方法
//
// Girl.m
// OC_07类的扩展
//
// Created by dllo on 15/7/24.
// Copyright (c) 2015年 dllo. All rights reserved.
//
#import "Girl.h"
@implementation Girl
- (void)getMarry
{
// 3.让代理人去执行协议里的方法
[self.delegate makeMoney];
}
@end
//
// Boy.h
// OC_07类的扩展
//
// Created by dllo on 15/7/24.
// Copyright (c) 2015年 dllo. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Girl.h"
// 4.引完头文件之后,boy需要签订协议
@interface Boy : NSObject<Marry>
@end
5.代理人实现协议
//
// Boy.m
// OC_07类的扩展
//
// Created by dllo on 15/7/24.
// Copyright (c) 2015年 dllo. All rights reserved.
//
#import "Boy.h"
@implementation Boy
// 5.实现协议方法makeMoney
- (void)makeMoney{
NSLog(@"板砖");
}
- (void)cook{
NSLog(@"!");
}
@end
6.设置代理人
// 创建俩小人
Boy *adam = [[Boy alloc]init];
Girl *lilith = [[Girl alloc]init];
// 6.设置代理人
lilith.delegate = adam;
[lilith getMarry];
Man *god = [[Man alloc]init];
lilith.delegate = god;
[lilith getMarry];