• OC基础 使用协议


    协议文件

    //协议
    @protocol IOSBase
    
    -(void)knowc;
    -(void)knowoc;
    -(void)canDevelopiOS;
    
    
    
    
    @end
    @protocol IOSBaseplus
    @optional//可选的
    -(void)knowcpower;
    @required//必须的 默认都是必须的
    -(void)knowocpower;
    -(void)canDevelopiOSpower;
    
    @end

    协议文件的使用

    .h

    #import <Foundation/Foundation.h>
    #import "person.h"
    #import "iosbase.h"
    #import "iosAdvance.h"
    NS_ASSUME_NONNULL_BEGIN
    
    @interface IOSProgrammer : person <IOSBase,IOSBaseplus>
    @property int year1;
    @property int year2;
    @property int num;
    @property int year3;
    @property int year4;
    @property int num2;
    
    
    @end

    .m

    #import "IOSProgrammer.h"
    
    @implementation IOSProgrammer
    -(void)knowc
    {
        
        NSLog(@"%i年c语言开发经验",_year1);
        
    }
    
    -(void)knowoc
    {
        NSLog(@"%i开发经验",_year2);
    }
    -(void)canDevelopiOS
    
    
    {
        NSLog(@"开发过%i个小程序",_num);
    }
    
    -(void)knowcpower
    {
      NSLog(@"%i年c语言高级开发经验",_year3);
        
    }
    
    
    @end

    .main

    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            // insert code here...
            NSLog(@"Hello, World!");
            IOSProgrammer* p1=[[IOSProgrammer alloc] initWithName:@"zhangsan" andAge:25 andGender:'m'];
            [p1 setYear1:1];
            [p1 setYear2:2];
            [p1 setNum:3];
            [p1 setYear3:3];
            [p1 knowcpower];
            
            
    //        [p1 show];
    //        [p1 knowoc];
    //        [p1 knowc];
    //        [p1 canDevelopiOS];
    
            IOSProgrammer* p2=[[IOSProgrammer alloc] initWithName:@"lisi" andAge:30 andGender:'m'];
            [p2 setYear1:2];
            [p2 setYear2:4];
            [p2 setNum:6];
            
            
            
            person* p3=[[person alloc] initWithName:@"wanger" andAge:25 andGender:'m'];
            NSArray *array=@[p1,p2,p3];
            for(id p in array)
                // 检查是否遵守协议
            {if([p conformsToProtocol:@protocol(IOSBase)])
                
                if([p year1]>1)
                {
                        
                [p show];
                [p knowoc];
                [p knowc];
                    
                }
                
            }
            
           
  • 相关阅读:
    golang的并行快速排序
    深信服面试
    一道算法题-勇敢的牛牛
    一道算法题-打车
    一道算法题-最少需要换掉的瓷砖数量
    《C++ Primer Plus》读书笔记之二—复合类型
    图解:TCP协议中的三次握手和四次挥手
    一道算法题-不用加减乘除做加法
    OSI七层模型与TCP/IP五层模型
    Socket编程
  • 原文地址:https://www.cnblogs.com/zhangqing979797/p/13227458.html
Copyright © 2020-2023  润新知