2012-01-06 73 views
3

我是MacRuby(和Objective-C)的新手。通过阅读一些Cocoa文档,我不断遇到提及委托符合协议的部分。到目前为止,我始终将我的AppDelegate设置为谈论代表的任何事项的协议,但我不确定我是否符合必要的协议。MacRuby:符合协议

我需要了解协议以及如何在应用程序中遵守这些协议?

回答

3

您需要了解[正式] Objective-C协议是什么,包括它定义了强制性和/或可选方法。请参阅Apple的Objective-C文档。协议是多重继承的有限形式,只有行为而不是状态才被继承。其他语言可以称为interfacemix-in

符合协议意味着您的类实现了所有强制方法,并且可能没有实现一些或全部可选方法。

通常,协议用于代表。这是一种将类从代理中需要的API形式化的方法。对于给定的委托协议,您需要了解该API。请参阅有关该特定协议的Apple文档。

最后,您既没有办法也没有必要声明您的MacRuby类符合任何协议。您可以直接将您的类实例分配给客户端对象代理。您仍然需要遵守协议,但不会有任何编译时检查。如果您不符合要求,则可能会出现运行时异常。或者一些奇怪的行为。或者其他的东西。

无论如何,这是我的理解。

+0

好的,所以它听起来像“符合协议”只是定义必要(或可选)方法的问题? – Andrew 2012-01-10 16:33:42

+0

(...就MacRuby而言) – Andrew 2012-01-10 17:49:57

+0

这是正确的。 – 2012-01-12 13:24:50