C中的静态方法(不是类方法)

Static method (which isn't class method) in objective C

在阅读这个问题并接受问题的答案时,我无法理解这两种方法之间的区别。实际上,通过阅读这个例子得到了这一点,但是后来,我无法编写自己的静态方法。

我在google中尝试了在目标C静态方法中创建静态方法

这让我想起了这个和这个问题的联系。但是,这里的示例是根据问题中的第一个链接的类方法。这让我困惑。

这里有人能告诉我如何创建一个不是类方法的静态方法吗?

任何有关这方面的指示都将不胜感激。


您遇到的问题是——obj-c中没有静态方法,这就是您无法创建它们的原因。

静态方法和类方法之间的区别是语言概念之间的区别。您可以在Java或C++等语言中找到静态方法,您将在Obj-C和Ruby语言中找到类方法。

主要区别在于

  • 静态方法在所有实例之间共享(这在obj-c中不存在)。它们在编译时根据变量的类型进行静态调度。

  • 类方法是类上的方法。在obj-c和ruby等语言中,类本身就是另一个类(元类)的实例。在方法声明之前使用+表示将在类上定义该方法。从技术上讲,它只是一个实例方法,只是在一个不同的对象上。

  • 不要担心,如果你不完全理解类方法的概念,这需要时间。为了简化,您可以将它视为实例之间共享的方法,但它可以在子类中被重写。