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

时间:2013-04-12 07:50:33

标签: objective-c static-methods class-method

在阅读问题的THIS问题和接受的答案时,我无法区分这两种方法。实际上通过阅读示例得到了重点,但后来,我无法编写自己的静态方法。

我尝试用googling 在Objective c静态方法中创建静态方法

其中包含指向THISTHIS问题的链接。但是,这里的示例是 CLASS方法,根据问题中的第一个链接。这让我感到困惑。

这里的任何人都可以告诉我如何创建静态方法,而不是类方法

任何关于此的亮点都将受到赞赏。

1 个答案:

答案 0 :(得分:21)

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

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

主要区别在于

  1. 静态方法在所有实例之间共享(这在Obj-C中不存在)。它们是静态调度的(在编译时),具体取决于变量的类型

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

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