代理协议
找女朋友案例
首先设置协议-》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]; }