协议
在谈到Objective-C时,协议是Objective-C语言的一个概念,因此是编译器可以理解的。具体来说,您可以通过@protocol
关键字来定义它。
一个类可以用角度语法声明自己符合协议:
@interface MyClass <MyProtocol> // class MyClass conforms to protocol MyProtocol
有些人在这里使用了“采用”这个词,例如“类MyClass
采用协议MyProtocol
”。
Objective-C 编译器将理解此语法,例如,如果其中有所需的方法MyProtocol
未在MyClass
.
模式
(编程设计)模式是可以用任何(图灵完备)语言实现的抽象概念您编写特定于语言的代码,然后这种模式告诉人类。编译器将不知道您是否将代码称为一些花哨的词。
适配器是一种特定的模式。同样,它可以与任何编程语言一起使用,尽管某些语言(例如 Python)通过声明使这变得更容易。
我不知道Conformer的概念。
代表们
委托是委托模式的一部分。它用于解决对象A
想要对对象做某事B
然后希望B
能够与之交谈的问题A
。为了使这种对话成为可能B
,需要了解一些关于方法的信息A
,但是 ifA
是一个非常复杂的类,因此B
可能被迫了解“太多”。
委托模式通过显式声明一个协议来解决这个问题DelegateOfB
,定义在哪里B
定义。然后任何需要从B
(例如A
)接收信息的类声明它符合DelegateOfB
并实现相应的方法。因此,B
除了A
符合DelegateOfB
.
这种模式也可以用任何语言实现,但是 Cocoa/Cocoa Touch 或大多数其他 Objective-C 框架是不寻常的,因为每当出现上述问题时,90% 的时间都使用委托。
在这里,协议是一种语言特性会有所帮助。同样,这种模式理论上可以在任何语言中使用,甚至是汇编程序 :),但它对 Objective-C 会更有用,因为您可以声明委托需要遵守此协议:
@property id<DelegateOfB> delegate;
如果编译器认为您分配的内容不符合DelegateOfB
.
在其他语言中,通常使用不同的解决方案,例如回调函数。