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\n", param1 , param2);
}

-(void) print_2{
    printf("2222\n");
}
-(void) print{
    NSNumber *x = @4242;
    NSLog(@"%@\n", 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> {....}

posted @ 2020-12-02 14:12  NeoZy  阅读(199)  评论(0编辑  收藏  举报