四十、类别 和 协议(四)协议

本文深入探讨了Objective-C中的协议与遵循机制,详细解释了如何在类中实现协议,以及如何通过协议来检查类是否实现了特定的功能。重点阐述了`@optional`与`@required`的区别,并演示了如何利用协议来增强代码的灵活性与可复用性。

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

在这份协议里面  @optional后面的措施  并不是  强制性的,也就是说  你  不一定要为  遵循这项协议的物件类型  编写  @optional后面的措施。相反,强制性的措施  可以放  在@required命令后面。

你  可以  自己  决定  是否遵循  协议,如果  你  决定  某类物件  遵循  某项协议,而  你  又  不编写  这项协议的具体措施,那么  编译器  就会发出  警告。

协议  跟物件类型  无关。任何一类物件  都可以  遵循  一项协议。

对  某个物件  采取  conformsToProtocol:这项措施  可以检查  这个物件  是否遵循  某项协议,比如  这样:

这段代码  检查了  currentObject这个物件  是否遵循  Drawing这项协议。

你  可以借助  编译器  检查  一个物件  是否遵循  一项协议。像  这样

将  协议的名称  放  在一对单书名号当中  就是告诉  编译器  变量currentObject中的物件  遵循  Drawing这项协议。如果  变量currentObject当中的物件  是  静态类型  并且  不遵循  Drawing这项协议,编译器  就会发出  警告。如果  变量currentObject当中的物件  是  动态类型,那么  编译器  就无法知晓  它  是否遵循  Drawing这项协议了。

你  还可以  将  一项协议  补充  在另外一项协议当中,比如  这样

就是  将  Drawing这项协议  补充  在Drawing3D这项协议当中。这  意味着  任何物件  如果  遵循  Drawing3D这项协议,同时  就必须遵循  Drawing这项协议。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值