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

pas*_*aya 16 methods class objective-c instance

我查看了所有这些问题......

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

UIA*_*dam 46

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

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

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

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