为什么在 Objective-C 的静态上下文中允许使用 self
?
我认为这是允许的,然后我遇到了内存错误,我花了一周时间才发现 self
不是从类中调用其他静态方法而不是键入类名的别名。
Xcode 及其编译器在发现常见缺陷方面似乎非常聪明,为什么它甚至不生成类似的警告?
最佳答案
- Objective-C 中没有“静态上下文”这样的东西。相反,我们拥有的是“类方法”。它们绝对是非“静态”方法。
- 类方法(以
+
为前缀的方法)实际上只是特定Class
对象上的实例方法。 (你的脑子是不是爆炸了?)既然你有一个可在实例方法中访问的self
变量,那么你自然也有一个可在类方法中访问的self
变量。 - 在类方法中,
self
指向类本身。 - 正如您可以在实例方法中执行
[self performAction]
以调用此特定实例上的方法一样,您可以在类方法中执行[self performClassAction]
以调用这个特定类的方法。 - 所有
Class
对象都是NSObject
的子类。因此,您可以在任何Class
对象上使用任何NSObject
实例方法。 (你的脑子又炸了吗?)
关于objective-c - 为什么在 objective-c 的静态上下文中允许 self,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6325453/