协议
在谈到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.
在其他语言中,通常使用不同的解决方案,例如回调函数。