Bar*_*vel 5 class objective-c variable-declaration objective-c-protocol
我习惯于看到类似的东西,id<NSCopying> myVar或者MyObject<NSCopying> myVar我们在说明有问题的变量可以很高兴地拥有NSCopying调用它的方法,而编译器不会摇摆不定.
但是我最近发现了一些定义了这样一个变量的代码:
Class<NSCopying> myClass;
Run Code Online (Sandbox Code Playgroud)
我想知道这实际意味着什么,因为它似乎与前两个例子略有不同.似乎我们说变量myClass可以愉快地接受来自的方法调用NSCopying- 但是具有能够接受这些实例变量方法的类类型似乎没有多大意义.
在我看来,类型的变量在技术上是对象本身,这可能让我或编译器(可能是我!)感到困惑.
所以我猜我在问:
Class<NSCopying> myClass;实际上是什么意思Class<NSCopying> myClass;有所不同id<NSCopying> myVarClass<NSCopying> myClass;有意义地使用?笔记:
NSCopying作为一个例子,并不是我用例的组成部分Class我指的是Class用于声明类型变量的Obj-C关键字Class.我不是将它用作任何类类型的通用术语.id <NSCopying> myVar
Run Code Online (Sandbox Code Playgroud)
使用id您可以提供任何类型的类的实例(只要它实现协议,或者您对其进行强制转换以使编译器信任您)。
Class <NSCopying> myClass
Run Code Online (Sandbox Code Playgroud)
使用Class意味着你只能提供一个Class,而不是一个实例。
假设您希望您的应用程序是可配置的。假设您有许多提供许多不同功能的类,但您不关心它们的继承,而只关心如何创建和配置它们。您可以使用类必须遵守的协议,并提供可以注册类的方法。然后,您可以使用定义的协议实例化这些类,而无需了解有关该类的任何其他信息。
| 归档时间: |
|
| 查看次数: |
240 次 |
| 最近记录: |