【问题标题】:Static method (which isn't class method) in objective C目标C中的静态方法(不是类方法)
【发布时间】:2013-04-04 15:45:19
【问题描述】:

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

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

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

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

我们将不胜感激。

【问题讨论】:

  • 一个静态方法一个类级别的访问方法。这种差异是“无”的。但是,您可以创建全局的静态 c-style 方法,这些方法是静态的,但不属于类
  • 类外的静态方法是什么意思?用正常的方法怎么能不一样?

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


【解决方案1】:

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

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

主要区别在于

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

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

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

【讨论】:

  • +1 感谢您提供信息。我真的很困惑。我想了一秒钟,如果 静态方法 存在,我应该在某个地方找到它。再次感谢。
  • +1 用于红宝石参考。我认为这有助于不断提醒人们,将 Objective-C 与 Java、C++ 和 C# 放在一起并不能帮助理解 Objective-C。它更容易与 python、ruby 和 smalltalk 进行比较。
猜你喜欢
  • 2011-01-17
  • 1970-01-01
  • 2014-01-08
  • 1970-01-01
  • 1970-01-01
  • 2012-10-19
  • 2017-07-07
  • 2011-02-01
  • 1970-01-01
相关资源
最近更新 更多