你真的了解iOS代理设计模式吗

先上图

协议:制定双方责任(方法或属性)

委托方:按照协议提出需求

代理方:按照协议完成需求,并返回结果

iOS对象不支持多继承,协议可继承

协议有两个修饰符@optional和@required,创建一个协议如果没有声明,默认是@required状态的。这两个修饰符只是约定代理是否强制需要遵守协议,如果@required状态的方法代理没有遵守,会报一个黄色的警告,只是起一个约束的作用,没有其他功能。

无论是@optional还是@required,在委托方调用代理方法时都需要做一个判断,判断代理是否实现当前方法,否则会导致崩溃。

// 判断代理对象是否实现这个方法,没有实现会导致崩溃

if ([self.delegaterespondsToSelector@s:electoruse(rLoginWithUsernamepass:word:)])

{

[self.delegate userLoginWithUsername:self.username.text password:self.password.text];

}

在iOS中代理本质是代理内存的传递和操作

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容