• Objective-C协议初识


     1 #import <Foundation/Foundation.h>
     2 #import "IOSProgrammer.h"
     3 #import "JavaCodingMonkey.h"
     4 int main(int argc, const char * argv[]) {
     5     @autoreleasepool {
     6         JavaCodingMonkey * javaCodingMokey = [[JavaCodingMonkey alloc] init];
     7         [javaCodingMokey writeJavaCode];
     8         
     9         IOSProgrammer * iOSProgrammer = [[IOSProgrammer alloc] init];
    10         [iOSProgrammer sleep];
    11         [iOSProgrammer sing];
    12         [iOSProgrammer playGame];        
    13         [iOSProgrammer writeIOSCode];
    14         
    15         id<IOSProgrammerProtocol> staff = iOSProgrammer;
    16         [staff writeIOSCode];
    17         
    18         id<IOSProgrammerProtocol> staff2 = javaCodingMokey;
    19         [staff2 writeIOSCode];
    20         
    21         // id 类型的指针 遵守协议后 只能调用协议中的方法
    22         
    23         
    24     }
    25     return 0;
    26 }
    main.m
    1 #import <Foundation/Foundation.h>
    2 // @protocol 协议的名字 <NSObject>
    3 @protocol IOSProgrammerProtocol <NSObject>
    4 @required // 必须要实现的方法 默认 不实现会有警告
    5 - (void)writeIOSCode;
    6 @optional // 可选的方法 可以实现也可以不实现
    7 - (void)playTaiji;
    8 @end
    IOSProgrammerProtocol.h
    1 #import <Foundation/Foundation.h>
    2 #import "IOSProgrammerProtocol.h"
    3 @interface JavaCodingMonkey : NSObject<IOSProgrammerProtocol>
    4 - (void)writeJavaCode;
    5 @end
    JavaCodingMonkey.h
     1 #import "JavaCodingMonkey.h"
     2 
     3 @implementation JavaCodingMonkey
     4 - (void)writeJavaCode {
     5     NSLog(@"write Java Code");
     6 }
     7 
     8 - (void)writeIOSCode {
     9     NSLog(@"write ISO code");
    10 }
    11 @end
    JavaCodingMonkey.m
    1 #import <Foundation/Foundation.h>
    2 #import "IOSProgrammerProtocol.h"
    3 
    4 @interface IOSProgrammer : NSObject<IOSProgrammerProtocol>
    5 - (void)sing;
    6 - (void)sleep;
    7 - (void)playGame;
    8 @end
    IOSProgrammer.h
     1 #import "IOSProgrammer.h"
     2 
     3 @implementation IOSProgrammer
     4 - (void)sing {
     5     NSLog(@"唱了一首 会喷火葫芦娃");
     6 }
     7 
     8 - (void)sleep {
     9     NSLog(@"好好的休息了一下");
    10 }
    11 
    12 - (void)playGame {
    13     NSLog(@"玩了一局英雄联盟");
    14 }
    15 
    16 - (void)writeIOSCode {
    17     NSLog(@"write iOS code");
    18 }
    19 @end
    iOSProgrammer.m



    三、协议的应用与功能

    a.应用

    1.(主要功能)规范接口(协议规范接口是强制的)

    2.   实现委托代理机制(实现对象之间的通信)  代理设计模式

    b.功能

    • 协议就是为了满足统一的数据传输
    • 一个类只能继承一个直接的父类,但可以实现多个接口(遵守多个协议),间接的实现了多继承.            

    用协议实现多继承  可定义多个协议   类遵守多个协议   实现协议中的方法 间接实现多继承  

    代码就不写了  很简单

  • 相关阅读:
    Linux提供两个格式化错误信息的函数
    warning: incompatible implicit declaration of built-in function ‘exit’
    RDMA的ibv_post_send() 函数
    (C语言)结构体成员的引用->(箭头)和 .(点)
    bcopy函数
    bzero函数
    利用GCC编译器生成动态链接库和静态链接库
    GCC编译器编译链接
    结构体类型定义(C语言)
    C语言编译链接
  • 原文地址:https://www.cnblogs.com/gwkiOS/p/4944082.html
Copyright © 2020-2023  润新知