zoukankan      html  css  js  c++  java
  • 协议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,我打电话找房源
  • 相关阅读:
    Cocos2dx 3.0 过渡篇(二十五)死不了的贪食蛇(触摸版)
    IBinder对象在进程间传递的形式(一)
    【代码实现】PHP生成各种随机验证码
    win8 metro 调用摄像头拍摄照片并将照片保存在对应的位置
    薏米红豆粥功效及做法介绍
    应用程序无法正常启动0xc0150002 解决方式
    贪心算法
    Linux 进程通信之 ——信号和信号量总结
    关于 ioctl 的 FIONREAD 參数
    google域名邮箱申请 gmail域名邮箱申请(企业应用套件)指南
  • 原文地址:https://www.cnblogs.com/liuyingjie/p/4954037.html
Copyright © 2011-2022 走看看