Mar*_*aev 3 cocoa cocoa-touch objective-c ios
什么是那些主要的亲和禁忌用于@protocol和类集群在Objective-C概念?
它们都在程序架构中引入了松散耦合.它们在概念上几乎是平等的,还是还有其他值得知道的东西?
警告:不是可可亲,但我不相信他们是平等的.
使用Class Clusters进行子类化.
类集群是Foundation框架广泛使用的设计模式.类集群在公共抽象超类下组合了许多私有具体子类.以这种方式对类进行分组简化了面向对象框架的公开可见体系结构,而不会降低其功能丰富性.类集群基于"可可设计模式"中讨论的抽象工厂设计模式.
@protocols 另一方面,更像是Java接口.
称为协议的Objective-C扩展非常类似于Java中的接口.两者都只是发布任何类可以选择实现的接口的方法声明列表.协议中的方法由其他类的实例发送的消息调用.
简而言之,Class Clusters是子类/超类,其子类符合超类的整个标识,因此可以向用户隐藏实现.NSArray在编译器使用上下文选择要使用的最佳数据结构类型的情况下,这是显而易见的.你不会在Java中打电话NSTree或NSLinkedList喜欢你.你可以看到如何NSNumber在这里实现,它说,特别是部分:
// NSNumber实例方法 - 永远不会被调用...
@protocols类似于客户端/服务器关系,其中客户端类采用服务器类的协议,因此服务器可以调用客户端上的功能. <NSAppDelegate>并且<UIAlertViewDelegate>是使用协议的很好的例子.
| 归档时间: |
|
| 查看次数: |
1611 次 |
| 最近记录: |