代理协议
找女朋友案例
首先设置协议-》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];
}
浙公网安备 33010602011771号