![]() |
1
1
协议委托模式中协议的全部目的是,此类(将向委托发送委托消息)需要知道或关心的唯一一件事是委托是该协议的采用者,即它实现了变量/方法。这个类不需要知道 班 代表的姓名;它只需要知道可以向委托发送委托消息。 因此,这一切都与编译器有关。充当委托的对象可能符合协议,但编译器不知道这一点,除非将此变量类型化为协议采纳器。如果编译器不知道,它将不允许我们向委托对象发送委托消息!我们就是这样打的。这是编译器需要知道的最小值,以便允许我们发送委托消息。 |
![]() |
2
1
不,协议是与代表不同的概念。Cocoa中的委托模式通常使用协议,尽管它不一定要使用。在ObjC 2之前,几乎所有的授权都是通过“非正式”协议完成的(即没有定义实际的协议)。在Core Foundation和Swift中,可以使用结构而不是协议来实现委托(这在Core Foundation中有些常见,但在Swift中更为罕见)。
Cocoa有一个传统,即使用一个名为
但协议比这要大得多。协议只是实现方法的承诺。它可以用于除授权之外的许多事情。 |