协议1

//结构:

//main.m

 1 #import <Foundation/Foundation.h>
 2 #import "Rent1.h"
 3 #import "Rent2.h"
 4 #import "Rent3.h"
 5 #import "Person.h"
 6 
 7 int main(int argc, const char * argv[]) {
 8     @autoreleasepool {
 9      
10         Person *xiaowang=[[Person alloc]init];
11         
12         Rent1 *r1=[[Rent1 alloc]init];
13         r1.name=@"Li";
14         Rent2 *r2=[[Rent2 alloc]init];
15         r2.name=@"叶良辰";
16         Rent3 *r3=[[Rent3 alloc]init];
17         r3.name=@"赵日天";
18         
19         xiaowang.obj=r1;
20         
21         [xiaowang needHouse];
22      
23     }
24     return 0;
25 }

//RentPototol.h《协议》

#import <Foundation/Foundation.h>

@protocol RentPototol <NSObject>
@optional
-(void)rentHouse;

@end

//Person.h

 1 #import <Foundation/Foundation.h>
 2 #import "RentPototol.h"
 3 @interface Person : NSObject
 4 
 5 @property(nonatomic,strong)NSString *myName;
 6 @property(nonatomic,assign)id<RentPototol> obj;
 7 
 8 -(void)needHouse;
 9 
10 @end

//Person.m

 1 #import "Person.h"
 2 #import "RentPototol.h"
 3 
 4 @implementation Person
 5 
 6 -(void)needHouse
 7 {
 8     if ([_obj respondsToSelector:@selector(rentHouse)]) {
 9         [_obj rentHouse];
10     }
11     else
12     {
13         NSLog(@"臣妾做不到呀!");
14     }
15 }
16 @end

//Rent1.h

#import <Foundation/Foundation.h>
#import "RentPototol.h"

@interface Rent1 : NSObject<RentPototol>
@property(nonatomic,copy)NSString *name;

@end

//Rent1.m

#import "Rent1.h"

@implementation Rent1

-(void)rentHouse
{
    NSLog(@"我是%@,我打电话找房源",_name);
}

@end

//Rent2.h

#import <Foundation/Foundation.h>
#import "RentPototol.h"

@interface Rent2 : NSObject<RentPototol>
@property(nonatomic,copy)NSString *name;

@end

//Rent2.m

#import "Rent2.h"

@implementation Rent2

-(void)rentHouse
{
    NSLog(@"我是%@,我打电话找房源",_name);
}

@end

//Rent3.h

#import <Foundation/Foundation.h>
#import "RentPototol.h"

@interface Rent3 : NSObject<RentPototol>

@property(nonatomic,copy)NSString *name;

@end

//Rent3.m

#import "Rent3.h"

@implementation Rent3

//并没有提供租住的能力,无法实现声明的协议要求

@end

//结果

2015-11-10 19:18:15.737 RentHouse[7738:124003] 我是Li,我打电话找房源

 

posted @ 2015-11-10 19:19  开心刘哈哈  阅读(148)  评论(0编辑  收藏  举报