9

在阅读问题并接受该问题的答案时,我无法区分这两种方法。通过阅读示例实际上明白了这一点,但是,我无法编写自己的静态方法。

我尝试在目标 c 静态方法中搜索创建静态方法

这让我回到了这个这个问题的链接。但是,这里的示例是根据问题中的第一个链接的CLASS 方法。这让我很困惑。

谁能告诉我如何创建一个不是类方法的静态方法?

对此的任何说明将不胜感激。

4

1 回答 1

22

您遇到的问题如下 - Obj-C 中没有静态方法,这就是您无法创建它们的原因。

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

主要区别在于

  1. 静态方法在所有实例之间共享(这在 Obj-C 中不存在)。它们根据变量的类型被静态调度(在编译时) 。

  2. 类方法是类上的方法。在 Obj-C 和 Ruby 等语言中,类本身就是另一个类(元类)的实例。在方法声明之前使用+意味着该方法将在类上定义。从技术上讲,它只是一个实例方法,只是在不同的对象上。

如果你没有完全理解类方法的概念,请不要担心,这需要时间。为简化起见,您可以将其视为实例之间共享的方法,但可以在子类中覆盖它。

于 2013-04-12T07:59:45.733 回答