我习惯于看到诸如id<NSCopying> myVar
or之类的东西MyObject<NSCopying> myVar
,我们在其中声明所讨论的变量可以愉快地NSCopying
调用它的方法,而编译器不会抛出一个不稳定的问题。
但我最近发现一些代码定义了一个像这样的变量:
Class<NSCopying> myClass;
我想知道这实际上意味着什么,因为它似乎与前两个示例略有不同。似乎我们在说变量myClass
可以愉快地接受来自的方法调用NSCopying
——但是让类类型能够接受这些实例变量方法似乎没有多大意义。
我突然想到,类类型的变量本身就是技术对象,这可能让我或编译器(可能是我!)感到困惑。
所以我想我在问:
Class<NSCopying> myClass;
类似的东西实际上是什么意思Class<NSCopying> myClass;
与类似的东西有什么不同id<NSCopying> myVar
Class<NSCopying> myClass;
在哪里可以有意义地使用类似的东西?
笔记:
- 我只是
NSCopying
作为一个例子使用,并不是我的用例不可或缺的 - 无论我在哪里提到,
Class
我的意思是 Obj-C 关键字Class
,用于声明类型为Class
. 我没有将其用作任何类类型的通用术语。