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

    由于OC单继承,所以如果不想改动原有类(生成子类),那么可以使用协议来扩展原有的类。

    OC的协议可以定义方法,遵守协议的类必须实现这些方法。

    调用方式和C++模板类一样

    @import Foundation;
    
    @protocol myProtocol_1 <NSObject>    //协议
    -(void) print_1: (int) param1 Setparam2: (int) param2;
    @end
    
    @protocol myProtocol_2 <NSObject>
    -(void) print_2;
    @end
    
    @interface classA : NSObject<myProtocol_1,myProtocol_2> //遵守两个协议
    @end
    
    @implementation classA
    -(void) print_1:(int)param1 Setparam2:(int)param2 {
        printf("111111 %d and %d
    ", param1 , param2);
    }
    
    -(void) print_2{
        printf("2222
    ");
    }
    -(void) print{
        NSNumber *x = @4242;
        NSLog(@"%@
    ", x);
    }
    @end
    
    int main(int argc, char* argv[]) {
        classA * val = [classA new];
        [val print];
        [val print_1: 5 Setparam2: 7];
        [val print_2];
        printf("%ld", [val retainCount]);
        [val release];
        return 0;
    }

    可以看到,classA类实现了myProtocol1和myProtocol2两个协议,声明方式为classA : NsObject<myPro1,myPro2> {....}

  • 相关阅读:
    [loj3031]聚会
    [loj3146]路灯
    [loj2049]网络
    [luogu7599]雨林跳跃
    [loj3069]整点计数
    [loj3301]魔法商店
    [loj3333]混合物
    [cf1515I]Phoenix and Diamonds
    [cf1515H]Phoenix and Bits
    [atARC116F]Deque Game
  • 原文地址:https://www.cnblogs.com/FdWzy/p/14073520.html
Copyright © 2011-2022 走看看