那些主要是什么pro and contra for @protocol
and 类簇 http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/CocoaObjects.html#//apple_ref/doc/uid/TP40002974-CH4-SW34Objective-C 中的概念?
两人介绍一下松耦合 http://en.wikipedia.org/wiki/Loose_coupling在程序架构中。它们在概念上几乎相等,还是还有其他值得了解的事情?
警告:不是可可专业人士,但我不相信它们根本是平等的。
With 类簇 http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/CocoaObjects.html#//apple_ref/doc/uid/TP40002974-CH4-SW34你子类化了。
类集群是 Foundation 框架广泛使用的一种设计模式。类簇将许多私有具体子类分组到公共抽象超类下。以这种方式对类进行分组简化了面向对象框架的公开可见的体系结构,而不会降低其功能的丰富性。类集群基于“Cocoa 设计模式”中讨论的抽象工厂设计模式。
@protocols http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/CocoaObjects.html#//apple_ref/doc/uid/TP40002974-CH4-SW46另一方面,它们更像 Java 接口。
Objective-C 的扩展(称为协议)非常类似于 Java 中的接口。两者都只是发布任何类都可以选择实现的接口的方法声明列表。协议中的方法由其他类的实例发送的消息调用。
简而言之,类簇是子类/超类,其中子类符合超类的整个身份,以便可以对用户隐藏实现。这在以下情况中很明显NSArray
编译器使用上下文来选择要使用的最佳数据结构类型。你不打电话NSTree
or NSLinkedList
就像在 Java 中一样。你可以看看如何NSNumber
is 在这里实施 http://code.google.com/p/purefoundation/source/browse/trunk/NSNumber.m?r=30,尤其是它说的部分:
// NSNumber 实例方法——永远不会被调用...
@protocols 就像客户端/服务器关系,其中客户端类采用服务器类的协议,因此服务器可以调用客户端上的功能。<NSAppDelegate>
and <UIAlertViewDelegate> http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIAlertViewDelegate_Protocol/UIAlertViewDelegate/UIAlertViewDelegate.html是使用协议的很好的例子。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)