OC协议


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

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

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

@import Foundation;

@protocol myProtocol_1     //协议
-(void) print_1: (int) param1 Setparam2: (int) param2;
@end

@protocol myProtocol_2 
-(void) print_2;
@end

@interface classA : NSObject //遵守两个协议
@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 {....}

OC