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)