objective-c - Objective-C 中的静态方法(不是类方法)

标签 objective-c static-methods class-method

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

我尝试使用谷歌搜索在 Objective-C 静态方法中创建静态方法

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

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

如能提供任何相关信息,我们将不胜感激。

最佳答案

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

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

主要区别在于

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

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

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

关于objective-c - Objective-C 中的静态方法(不是类方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15965865/

相关文章:

javascript - Javascript 中的类方法

objective-c - 如何在子类中复制NSArray内存语义

ios - 断点在 xcode pod 文件中不起作用

c++ - 使用 CMake 将错误与静态方法链接起来

python - 使用两个不同的装饰器实现装饰所有类方法的元类

python - 将 super 与类方法一起使用

iphone - 如何在iphone中获取pinchgesture的坐标

objective-c - 归档构建 .IPA 文件时如何解决位码错误?

c# - 通过多线程调用静态方法 - 它们可以干扰彼此的输入参数吗

matlab 静态方法是不必要的,对吧?