类方法和实例方法的区别是什么?
实例方法是访问器(getter和setter),而类方法几乎是其他所有东西吗?
类方法和实例方法的区别是什么?
实例方法是访问器(getter和setter),而类方法几乎是其他所有东西吗?
当前回答
你的问题的答案并不特定于objective-c,但是在不同的语言中,类方法可能被称为静态方法。
类方法和实例方法之间的区别是
类方法
操作Class变量(它们不能访问实例变量) 不需要一个对象被实例化应用 有时可能是一种代码气味(一些刚接触OOP的人把它作为在面向对象环境中进行结构化编程的拐杖)
实例方法
操作实例变量和类变量 必须对一个实例化对象进行操作
其他回答
类方法通常用于创建该类的实例
例如,[NSString stringWithFormat:@"SomeParameter"];返回一个带参数的NSString实例。因此,因为它是一个返回其类型的对象的Class方法,所以它也被称为方便方法。
类方法
类方法通常要么创建类的新实例,要么检索类的一些全局属性。类方法不能对实例进行操作,也不能访问实例变量。
实例方法
实例方法对类的特定实例进行操作。例如,您实现的accessors方法都是实例方法。您可以使用它们来设置或获取特定对象的实例变量。
调用
要调用实例方法,需要将消息发送到类的实例。
要调用类方法,可以直接将消息发送给类。
来源:IOS - Objective-C -类方法和实例方法
对上述答案的更新,我同意实例方法使用类的实例,而类方法可以只使用类名。
在Objective-C中实现自动引用计数后,实例方法和类方法之间不再有任何区别。
例如[NS StringWithformat:..][[NSString alloc] initwithformat:..]]实例方法,两者在ARC之后是一样的
补充上述答案
Class方法将在Class上工作,我们将它用于一般用途,如+stringWithFormat,类的大小,最重要的是用于init等
NSString *str = [NSString stringWithFormat:@"%.02f%%",someFloat];
实例方法对一个类的实例起作用,而不是对一个类起作用,比如我们有两个人,我们想知道每个人的余额,这里我们需要使用实例方法。因为它不会返回一般响应。例如,确定NSSArray的计数等。
[johnson getAccountBalance];
[ankit getAccountBalance];
实例方法应用于类的实例(即对象),而类方法应用于类本身。
在c#中,类方法被标记为静态。未标记为static的方法和属性是实例方法。
class Foo {
public static void ClassMethod() { ... }
public void InstanceMethod() { ... }
}