17

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

...他们所解释的只是当向类发送消息时如何在类的实例上使用实例方法以及如何与类一起使用类方法。这很有帮助,但我很想知道为什么要使用类方法与实例方法。

4

1 回答 1

47

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

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

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

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

于 2012-06-24T02:35:45.607 回答