美文网首页
协议protocol

协议protocol

作者: 搬砖的crystal | 来源:发表于2020-04-07 14:03 被阅读0次

一、 非正式协议

非正式协议就是类别,即凡是NSObject或其子类的类别,都是非正式协议。

二、协议(protocol)

Protocol(协议)类似一个类的接口,只声明,不实现。
Protocol只能定义公用的一套接口,但不能提供具体的实现方法。也就是说,它只告诉你要做什么,但具体怎么做不关心。具体的实现要在遵守这个协议的类中实现。

1.基本作用
  • 声明若干个方法(不能声明成员变量)。
  • 只要某个类遵守了这个协议,就拥有了该协议中的所有方法声明,类对象可直接调用方法。
  • 只要父类遵守了某个协议,其子类也跟着遵守。
  • 一个类可以遵循多个协议
  • 协议可以遵守协议。一个协议遵守了另一个协议,就可以拥有另一份协议中的方法声明。
  • Protocol可以用@property形式声明属性,只不过只有对应的setter/getter方法声明,并没有生成对应的成员变量
2.基协议

<NSObject>是基协议,是最根本的协议,其中声明了很多最基本的方法,如description,retain,release。建议每个新协议都要遵守NSObject协议

3.使用

(1)定义协议
可定义在单独.h文件中,也可用定义在某个类中。

@protocol TestProtocol <NSObject>
/*
 修饰方法的关键字
 @required :要求遵循协议的类必须实现,否则会发出警告,但不报错。
 @optional :不要求实现,不实现也不会有警告。
 */

-(void)testMethod;
@end

(2)遵守协议

#import <UIKit/UIKit.h>
#import "TestProtocol.h"

@interface TestView : UIView <TestProtocol>

@end

限制对象遵守某个协议

/*
 限制对象遵守某个协议:
 定义一个变量的时候,可以限制这个变量保存的对象遵守某个协议。如果没有遵守协议,编译器会警告。
 */
@property (nonatomic, strong) TestView <TestProtocol> *testView;

相关文章

  • Protocol

    使用protocol定义协议//Protocol Syntaxprotocol SomeProtocol { }...

  • 计网之传输层

    协议端口号(protocol port number)协议端口号(protocol port number)简称 ...

  • Protocol协议

    1.@required和@optional关键字 @required:这个方法必须要实现 @optional:这个...

  • Protocol(协议)

    // swift的协议很重要// 协议 protocol //“协议 定义了一个蓝图,规定了用来实现某一特定任务...

  • 协议(protocol)

    协议语法 遵守协议的格式 属性要求 例子 协议中定义类型属性 例子 方法要求 例子 Mutating方法要求 例子...

  • 协议 protocol

    protocol( 协议 ) 作用:声明方法 任何类只要遵守了这个( protocol )协议就拥有了这个协议的左...

  • 协议protocol

    在Boost.Asio中提供了四种基本协议: datagram protocol raw protocol seq...

  • 协议Protocol

    协议Protocol 协议:类型的合同约定,只描述外部接口,不提供具体实现 协议包含成员: 属性 实例方法 类方法...

  • 协议Protocol

    一、协议的基本概念 1、protocol它可以声明一些必须实现的方法和选择实现的方法,这与java是完全不同的 2...

  • 协议protocol

    一、 非正式协议 非正式协议就是类别,即凡是NSObject或其子类的类别,都是非正式协议。 二、协议(proto...

网友评论

      本文标题:协议protocol

      本文链接:https://www.haomeiwen.com/subject/efadwctx.html