zoukankan      html  css  js  c++  java
  • objective-c(协议)

    objective-c中不支持多重继承,其替代方案为Protocal(协议),下面给出一个基本实例:

    • 定义一个协议
    @protocol MyProtocal <NSObject> //协议本身也可以嵌套,如protocal1<protocal2>
    
    //在OC 2.0后协议增加了required和optional两个修饰符标示是否必须要实现这个接口
    //未实现要求的接口,在xcode下回提示warning
    @required
    -(void) printId:(int)id; //@optional -(void) printName:(NSString*) name; @end
    • 定义一个类遵循这个协议
    #import <Foundation/Foundation.h>
    #import "MyProtocal.h"
    @interface ClassA : NSObject<MyProtocal>{ //遵循这个协议,此处可以遵循多个,如<protocal1,protocal2....>
        int _id;
        NSString *_name;
    }
    
    @property int _id;
    @property NSString *name;
    
    -(void) printId:(int)id;
    
    @end
    • 测试代码
    #import <Foundation/Foundation.h>
    #import "ClassA.h"
    
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            ClassA *tmp = [[ClassA alloc]init];
           
            if([tmp conformsToProtocol:@protocol(MyProtocal)]== YES){ //判断某个实例是否遵循这个协议
                NSLog(@"conforms MyProtocal");
                [tmp printId:1];
            }
        }
        return 0;
    }
  • 相关阅读:
    SRM482
    SRM481
    SRM480
    SRM479
    SRM478
    vue-cli 3 is not a modual err
    .vimrc
    css3 导入字体
    class []的用法
    RK61 Keyboard Use
  • 原文地址:https://www.cnblogs.com/Fredric-2013/p/4297024.html
Copyright © 2011-2022 走看看