• 【Object-C】协议 @protocol


    作用类似于接口。用于多个类应该遵守的方法。
    协议定义的时多个类共同的公共行为规范,这些行为是于外部交流的通道,这就意味着协议里通常是定义一组公用方法,但不会为这些方法提供具体实现,方法的实现交给类去实现。

    同一个类的内部数据、和方法的实现细节完全相同,但是
    类是一种具体实现。而协议则规定了一种规范,协议定义某一批类所需要遵守的规范,不关心这些类的内部数据和方法的实现细节,只是规定遵循该协议的这一批类中必须提供某些方法,提供这些方法的类就可以满足实际需求。

    协议不提供任何实现。协议体现的是规范和实现分离的设计哲学。

    可以使用类别来实现非正式协议。但是Object-c 并不强制实现该协议中的所有的方法,当类中没有实现这些方法时可能就会出现错误。

    遵守正式协议必须实现协议中定义的所有方法。可以通过@optional @required 来修饰协议
    @optional :协议方法可选,可实现也可不实现
    @required:协议方法必须遵守,必须实现。

    正式协议定义:
    @protocol 协议名 <父协议1,父协议2>
    {
       零到多个类或实例方法(协议)定义;
    }
    @end

    point:
    1、协议名和前面的类和类别从语法角度看很像
    2、一个协议可以有多个直接的父协议
    3、协议只能继承协议,不能继承类
    4、协议中定义的方法只有方法签名,没有具体的方法实现
    5、协议中定义的方法既可以是类方法,也可以是实例方法

    遵守(实现)协议
    在类定义的接口部分可以指定该类继承的父类,以及遵守的协议。一个类可以同时遵守多个协议。
    @interface 类名 : 父类<协议1,协议2>

    协议与委托delegate
    协议体现的是一种规范,定义协议的类可以把协议定义的方法委托给实现协议的类,这样可以让类定义具有更好的通用性质,将具体的实现交给遵守该协议的类区实现。

    使用协议来定义变量
    NSObject<协议1,协议2> * 变量 ;

  • 相关阅读:
    20180320作业2:进行代码复审训练
    20180320作业1:源代码管理工具调查
    软工作业PSP与单元测试练习
    软工课后作业01-P18第四题
    20180320作业2:进行代码复审训练
    判断传入的电子邮箱账号的正确性
    软工课后作业01-00365
    实现模块判断传入的电子邮箱账号的正确性
    个人介绍
    20180320作业2:进行代码复审训练
  • 原文地址:https://www.cnblogs.com/shujucn/p/7481475.html
Copyright © 2020-2023  润新知