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

先上图

你真的了解iOS代理设计模式吗_第1张图片

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

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

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

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中代理本质是代理内存的传递和操作

你可能感兴趣的:(你真的了解iOS代理设计模式吗)