可能重复:
Objective-C: Class vs Instance Methods?
Objective-C - difference between class method and static method?
在ObjC中,方法名称前的单个破折号意味着它是一个实例方法。方法名称前面的加号意味着它是一个类方法。但编程有什么不同?
答案 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