objective-c - 为什么在 objective-c 的静态上下文中允许 self

标签 objective-c xcode

为什么在 Objective-C 的静态上下文中允许使用 self

我认为这是允许的,然后我遇到了内存错误,我花了一周时间才发现 self 不是从类中调用其他静态方法而不是键入类名的别名。

Xcode 及其编译器在发现常见缺陷方面似乎非常聪明,为什么它甚至不生成类似的警告?

最佳答案

  1. Objective-C 中没有“静态上下文”这样的东西。相反,我们拥有的是“类方法”。它们绝对是“静态”方法。
  2. 类方法(以 + 为前缀的方法)实际上只是特定 Class 对象上的实例方法。 (你的脑子是不是爆炸了?)既然你有一个可在实例方法中访问的 self 变量,那么你自然也有一个可在类方法中访问的 self 变量。
  3. 在类方法中,self 指向类本身
  4. 正如您可以在实例方法中执行 [self performAction] 以调用此特定实例上的方法一样,您可以在类方法中执行 [self performClassAction] 以调用这个特定类的方法。
  5. 所有 Class 对象都是 NSObject 的子类。因此,您可以在任何 Class 对象上使用任何 NSObject 实例方法。 (你的脑子又炸了吗?)

关于objective-c - 为什么在 objective-c 的静态上下文中允许 self,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6325453/

相关文章:

objective-c - 发送 'self' 到对象

ios - NSInvalidUnarchiveOperationException : 'Could not instantiate class named _UITableViewCellSeparatorView'

ios - CLBeacon : How can I get the distance from the IBeacons?

xcode - 如何使用 rb-appscript 将文件添加到 Xcode 中的目标?

ios - 从 webview Controller xcode 打开 Whatsapp

ios - 如何根据在 UITableViewCell 中点击的单元格进行判断?

ios - 如何避免插入重复记录?

objective-c - 从 UIViewController 内部在 iOS objective-c 中绘制 4.000 个点或线

ios - 带有多个 OR 语句的 Objective-C IF 语句

objective-c - 未找到方法定义...使用 Xcode 自动 stub ?