IOS ——OC——  协议的使用总结

.协议(定义了一组方法让其他的类实现)
@required :    定义的是必须实现的方法
@optional : 定义的是可选实现的方法
 
(1).协议声明了可以被其他的类实现的方法。协议本身不会去实现。
 
(2)协议不是类,只是一个其他对象可以实现的接口。

定义一个协议:

#import <Foundation/Foundation.h>
@protocol MarryProtocol <NSObject>//定义一个结婚协议,结婚协议也可以继承其它的协议。
@required   //必须遵守的协议,在遵守MarryProtocol协议的类的.m文件中去实现里边的方法。
- (void)washClothes;
- (void)cook;
@optional  //可选的协议
- (void)makeMoney;
@end

代理(委托)模式:自己有需求,但是让别人去做。

定义一个Men类

#import <Foundation/Foundation.h>
#import "RoomService.h" 
@interface Men : NSObject
@property(nonatomic,retain)NSString * name;
@property(nonatomic,assign)id<MarryProtocol> mate;//定义一个代理
-(id)initWithName:(NSString *)name;
-(void)needEat;
@end

定义一个Women类

#import <Foundation/Foundation.h>
#import "MarryProtocol"
@interfaceWomen : NSObject <MarryProtocol>  //遵守协议
@property(nonatomic,retain)NSString * name;
-(id)initWithName:(NSString *)name;
@end

在Men的实现里边

-(void)needEat
{
    [self.mate  cook];
}

在Women的实现里边有一个方法

-(void)cook

{

      NSLog(%@"wonmen正在做饭");

}

主函数里边

men.mate = women;

[men needEat];

打印出:wonmen正在做饭

4.协议也可以写在一个类里边,用到的时候引入类的头文件就可以。

posted @   #零下一度&  阅读(241)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
点击右上角即可分享
微信分享提示