协议Protocol---类型限制,以及@required @optional 关键字的区别

1.声明一个指针,这个指针可以只想任何对象,但是要求只想对象要遵守制定的协议  

 声明一个指针,遵守study协议的对象,否则给个警告

 

 NSObject<协议名称> *指针名;---(id也是可以的)

 这个时候,这个指针就会只想制定对象的任意对象,否则回报一个警告

 

 

 准守的多个协议的时候, NSObject<SBProtocol,StudyProtocol> *obj4 = [Student new];

 只有Student中都实现了<SBProtocol,StudyProtocol>这两个方法的时候才可以,

 

 遵守某个协议的类,就相当于这个类拥有这个协议所定义的行为,因为我们要调用这个对象中的协议方法,只有类准守了协议这个类中一定才有协议方法

 

如下




#import <Foundation/Foundation.h>

#import "StudyProtocol.h"

#import "Student.h"

#import "SBProtocol.h"



int main(int argc,const char * argv[]) {

 

    NSObject<StudyProtocol> *obj = [Studentnew];

    

    Student *obj1 = [Studentnew];

    

    id<StudyProtocol> id1 = [Studentnew];

    

    NSObject<SBProtocol,StudyProtocol> *obj4 = [Student new];

    

    return0;

}




6.@required @optional  专门修饰协议中的方法的,

    在协议当中,方法的声明,被@required修饰,那么就准守这个协议的类,必须实现这个方法,否则就会发出警告

   @optional修饰,那么准守这个协议的类,可以实现这个方法,也可以不实现这个方法,不实现编译器也不会报警告。

   唯一的区别,就是当遵守协议的类,而不实现协议中的方法的时候,@required会给一个警告,@optional不会又警告的

 

    这两个关键字的主要擢用,在于程序猿的沟通,告诉准守协议的类,那些方法必须实现的,因为这个会调用,默认情况下是@required


有关协议的基本使用------链接-------点击打开链接






  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值