三、代理模式

1. 何为代理模式

代理模式:为另一个对象提供一个替身或占位符以控制对这个对象的访问。

首先说一下什么是“代理”吧,其实代理很好理解,你就把“代理”看成是二道贩子,说的好听点叫代理商。就是你买个东西,不从生产地直接买,而是通过二道贩子,三道贩子来进行购买,这些商贩就是代理商,也就是我们今天所说的代理。说的具体点,比如你要买棵萝卜,那么一般人不会去找菜农,然后给他们钱直接去地里薅萝卜。大部分人是通过商超来获取萝卜,这些商超就是所谓的萝卜代理商,也就是二道贩子。

2. 情景设置

3. 代码实现

3.1 OC代码演示

3.2 Swift代码演示

代理在Swift中也算是比较常用了,虽然闭包也就是block的更简便运用,但是代理的作用依然无法被完全取代,其实这也完全取决于开发者的习惯。

下面通过代码演示代理的使用步骤:

The first step: define a protocol
  • 在Swift中,制定协议需要遵守NSObjectProtocol协议,除了类可以遵守协议,结构体也可以遵守协议

  • 在OC中我们制定协议,通常继承自NSObject,可以这样理解,所有继承自NSObject的对象都可以实现协议方法(同样我们也可以指定哪些对象可以实现我们制定的协议方法)

不写NSObjectProtocol暂时不会报错,但是写属性是无法写weak

protocol myDelegate {
    // 代理方法
    func myAction(result: Int)
}
The second step: Declare an agent property
weak var delegate: myProtocol?
The third step: abide by the myProtocol
class B: myDelegate
The fourth step: set A instance's delefate
a.delegate = self
The fifth step: implement delegate method
func myAction(result: Int) {
        print(#function)
}
The sixth step: call delegate method
  • '?'代替了responsed
self.delegate?.myAction(result: 1)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容