【发布时间】:2014-01-27 19:17:46
【问题描述】:
我习惯于看到id<NSCopying> myVar 或MyObject<NSCopying> myVar 之类的东西,我们在其中声明有问题的变量可以愉快地调用NSCopying 方法,而编译器不会抛出一个不稳定的问题。
但我最近发现一些代码定义了这样的变量:
Class<NSCopying> myClass;
我想知道这实际上意味着什么,因为它似乎与前两个示例略有不同。似乎我们是在说变量 myClass 可以愉快地接受来自 NSCopying 的方法调用 - 但是具有能够接受这些 instance 变量方法的类类型似乎没有多大意义。
我突然想到 class 类型的变量在技术上本身就是对象,这可能会让我或编译器(可能是我!)感到困惑。
所以我想我在问:
-
Class<NSCopying> myClass;之类的实际含义是什么 -
Class<NSCopying> myClass;与id<NSCopying> myVar之类的内容有何不同? -
Class<NSCopying> myClass;这样的东西可以在哪里有意义地使用?
注意事项:
- 我只是以
NSCopying为例,并不是我的用例的组成部分 - 无论我在哪里提到
Class,我的意思是 Obj-C 关键字Class用于声明类型为Class的变量。我没有将此作为任何类类型的通用术语。
【问题讨论】:
标签: objective-c class variable-declaration objective-c-protocol