Objective-C中实例方法和类方法的区别是什么?

时间:2012-11-01 06:52:09

标签: objective-c

  

可能重复:
  Objective-C: Class vs Instance Methods?
  Objective-C - difference between class method and static method?

在ObjC中,方法名称前的单个破折号意味着它是一个实例方法。方法名称前面的加号意味着它是一个类方法。但编程有什么不同?

3 个答案:

答案 0 :(得分:2)

类方法和实例方法之间的区别在于 instance方法需要一个类的实例 (一般)操作。必须是要调用实例方法的消息 发送到一个类的实例。

类方法最常见的单一用法可能是对象 工厂;您发送给类以创建实例的消息 根据您发送的参数进行配置。例如,在 Cocoa NSString类有几个名为的类方法 stringWithSomethingOrOther:这将创建一个新的NSString对象和 把它交还给你。

另一方面,NSString 有很多实例方法 - 在没有实际实例的情况下真正没有意义的操作 与...合作。一个常用的可能是长度方法,它告诉我们 您在特定NSString实例中有多少个字符 邮件已发送。

另见。 What is the difference between class and instance methods?

答案 1 :(得分:0)

在对象上调用实例方法。在类上调用类方法。

例如行:

SomeClass *object = [[SomeClass alloc] init];

在这里你可以看到“alloc”在“SomeClass”上工作,而不是在“object”上工作。

鉴于: [object callMyFunction];将对“对象”而不是“类”进行操作。这是一个实例方法。

答案 2 :(得分:0)

与这两者的主要区别在于前一个,即单个破折号之前,它只被声明它的那个类的实例调用,即必须创建该类的一个实例意味着该类的一个对象并使用.可以调用实例方法

在类方法中,可以使用类名直接调用后一个方法。要调用类方法,不需要任何对象。

请参阅Apple开发者文档中的this link