OC-协议与代理
【协议】================================================================
@protocol
【协议的作用】:规定了需要实现的接口方法,在委托方和代理方都需要遵从的一个协议。
委托方通过(nt.delegate = self;)这种方式进行委托【注,不仅可以委托自己,也可以委托其他的类】
代理方通过([_delegate test];)这种方式进行方法的代理(替...干了....)
【例如】:
小明是委托方,小刚是代理方。他们之间都遵从一个协议。协议中规定了2个方法(功能);小明把自己委托给了小刚,小刚则拥有了指向小明的对象的指针,通过这个指针可以访问小明的任何方法(必须是协议中规定的方法)
【注】协议中的方法有如下2中权限
1.@required//委托方(小明)必须实现这个方法
2.@optional//委托方(小明)可以实现,也可以不实现这个方法
【注】@required要求的方法如果不实现,则会提示警告,@optional如果不实现,则没有任何问题。
【注】使用哪个协议,必须包含协议的头文件。
【代理和协议的添加方式】
1.包含头文件
2.在委托方添加协议,然后实现协议方法
3.在代理方实现代理对象变量。
4.在委托方,给代理对象变量赋值
5.在需要用到的地方,通过代理对象的变量,去访问委托的方法。
【协议和代理用处】
例如商品页的商品购买,但是用户没登陆,需要先登陆,登陆成功后,需要把状态告诉商品页,商品页判断登陆状态,然后继续进行下一步操作。【注】登陆页就是在商品页中创建出来的一个对象;【代理的回调】
【协议和代理局限性】
只能是2个相关联的类之间进行数据的互相访问。
【例如】小明委托小刚干什么;小刚委托小红干什么
【respondsToSelector方法】
作用:使代码更安全,防止崩溃
//判断OutPutPersonInfo 方法是否存在,存在跳入方法
if([_woshidaili respondsToSelector:@selector(OutPutPersonInfo:)])
{
[_woshidaili OutPutPersonInfo:@"我是小刚"];
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~