黑马程序员------协议(Protocal)

本文介绍了Objective-C中的协议,包括协议的作用、基本使用、定义、遵守协议的方式,以及协议方法声明的关键字。协议主要用于声明方法,允许类遵循多个协议,而不仅仅是单继承。同时,协议可以包含其他协议,实现方法的扩展。文章详细讲解了如何在类声明和属性声明中遵守协议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


1, 协议简介

  1.protocol:就一个用途,用来声明一大堆的方法(不能声明成员变量),不能写实现。

  2.只要某个类遵守了这个协议,就拥有了这个协议中的所有方法声明。

  3.只要父类遵守了某个协议,那么子类也遵守。

  4.protocol声明的方法可以让任何类去实现,protocol就是协议。

  5.OC不能继承多个类(单继承)但是能够遵守多个协议。继承(:),遵守协议(< >

  6.基协议:<NSObject>是基协议,是最根本最基本的协议,其中声明了很多最基本的方法。

  7.协议可以遵守协议,一个协议遵守了另一个协议,就可以拥有另一份协议中的方法声明。

2, 基本使用


//协议的声明
#import <foundation foundation.h="">
@protocol OneProtocol <nsobject>
//可以选择实现的方法:
@optional
-(void) optionalMethod1;
-(void) optionalMethod2;
//必须实现的方法:
@required
-(void) requiredMethod1;
@end
//采用协议(Test.h)
#import "OneProtocol.h"
@interface Test : NSObject<oneprotocol></oneprotocol></nsobject></foundation>



3,协议的定义

    @protocol 协议名称 <NSObject>

      //方法声明列表

    @end;

4,如何遵守协议

  (1)类遵守协议

    @protocol 类名:父类名 <协议名称1,协议名称2>

    @end

  (2)协议遵守协议

    @protocol 协议名称 <其他协议名称>

    @end;

5,协议方法声明中的关键字

  (1required (默认)要求实现,若没有实现则警告但不报错

  (2optional 不要求实现

6,定义变量时遵守协议的限制

    类名<协议名称> *变量名    NSObject<.Myprotocol> *obj;

    id  <协议名称>  变量名   id  <.Myprotocol> obj1;

7,property中声明的属性也可以遵守协议

    @property (nonatomic ,strong ) 类名<协议名称> *属性名;

    @property (nonatomic ,strong ) id<协议名称>  属性名;

-------------------------加油自己

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值