zoukankan      html  css  js  c++  java
  • OC Protocol----协议

    类似Java的泛型与接口的结合体,用于类型的<>中,可以多继承(按照OC的说法叫遵从某些协议)

    1、定义协议

     

    @protocol Client <NSObject>  
    -(void)defaultMethod;//默认必须实现  
      
    @required//必须  
    -(void)required;  
      
    @optional//可选  
    -(void)optional;  
    @end  

    2、符合(实现)协议

     
    
    #import "Client.h"  
    @interface JackClient : NSObject<Client>  
      
    @end   
      
    @implementation JackClient  
    -(void)defaultMethod{  
        NSLog(@"this is defaultMethod");  
    }  
      
    -(void)required{  
        NSLog(@"this is required method");  
    }  
    @end  

    3、使用并调用回调

     

     

    #import "Client.h"  
    #protocol JackClient  
      
    @interface Test : NSObject<Client>{  
        id<Client> client;  
    }  
    -(id)initWithClient:(id<Client>) client;  
    -(void) turnTheCrank;  
    @property(retain) id<Client> client;  
      
    @end  
      
    @implementation Test  
      
    -(id)initWithClient:(id<Client>)client{  
        self = [super init];  
        if (self) {  
            _client = client;  
        }  
        return self;  
    }  
      
    -(void) turnTheCrank{  
        [self.client defaultMethod];  
        [self.client required];  
        if ([self.client respondsToSelector:@selector(optional)]) {//可选回调可先判断是否实现,再调用  
            [self.client optional];  
        }  
    }  
      
    @end  

    最后

    [[[Test alloc]initWithClient:[[JackClient alloc] init]] turnTheCrank];  

     

  • 相关阅读:
    hdu 14004
    hdu 1850 基础尼姆博奕
    hdu 1847 sg函数
    hdu 2177
    hdu 1527
    hdu 2897
    hdu 2516 取石子游戏
    hdu 1525 Euclid's Game
    hdu 2063
    hdu 1281 棋盘游戏
  • 原文地址:https://www.cnblogs.com/killiancheung/p/4569713.html
Copyright © 2011-2022 走看看