Objective-C中实例方法与类方法的目的

时间:2012-06-24 02:21:49

标签: objective-c class methods instance

我已经检查了所有这些问题......

...他们解释的是当一个消息被发送到一个类时,实例方法如何在类的实例上使用,并且类方法与类一起使用。这很有帮助,但我很想知道为什么会使用类方法而不是实例方法。

1 个答案:

答案 0 :(得分:46)

一般来说,当您需要在特定对象实例上运行的代码时,您应该创建实例方法。当您需要执行一般涉及该类的某些操作时,您可以创建一个类方法,但可能不会对该类的任何特定对象进行操作。

在实践中,您会发现几乎所有方法都应该是实例方法。只需查看任何现有的Objective-C类,如NSStringNSArrayUIView等,您将看到他们的绝大多数方法都是实例方法。类方法的最常见用法(再次,查看我提到的类)是为了方便构造函数,它们返回autorelease个对象或单例访问器。

考虑length中的NSString方法。为什么这是一个实例方法而不是类方法?它是一个实例方法,因为只询问NSString的特定实例的长度是有意义的。一般要求NSString一个长度(即长度是一种类方法)是没有任何意义的。

另一方面,假设我们要向NSNumber添加一个方法,该方法将返回可存储在给定系统上的最大整数值。在这种情况下,它应该是类方法,因为我们只是询问NSNumber的一般问题,它独立于任何特定实例。