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

Objective-C中的实例方法和类方法有什么区别?,objective-c,Objective C,可能重复: 在ObjC中,方法名称前的一个破折号表示它是一个实例方法。方法名称前的加号表示它是类方法。但是编程有什么区别呢?在对象上调用实例方法。在类上调用类方法 例如,行: SomeClass*对象=[[SomeClass alloc]init] 在这里,您可以看到alloc在某个类上工作,而不是在对象上 鉴于: [对象调用MyFunction];将作用于对象而不是类。这是一种实例方法。这两种方法的主要区别在于前者,即在声明该类的实例调用它之前,使用单破折号,即必须创建该类的一个实例,表示该

可能重复:


在ObjC中,方法名称前的一个破折号表示它是一个实例方法。方法名称前的加号表示它是类方法。但是编程有什么区别呢?

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

例如,行:

SomeClass*对象=[[SomeClass alloc]init]

在这里,您可以看到alloc在某个类上工作,而不是在对象上

鉴于:
[对象调用MyFunction];将作用于对象而不是类。这是一种实例方法。

这两种方法的主要区别在于前者,即在声明该类的实例调用它之前,使用单破折号,即必须创建该类的一个实例,表示该类的一个对象,并使用。可以调用实例方法

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


请参阅apple开发者文档

类方法和实例方法的区别在于 实例方法需要它将在其上运行的类的实例 一般操作。调用实例方法的消息必须是 发送到类的实例

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

另一方面,NSString也有许多实例方法- 如果没有一个实际的实例,这些操作实际上毫无意义 与……合作。一个常用的方法可能是length方法,它告诉我们 您可以查看要添加到的特定NSString实例中有多少个字符 消息已发送

也看到这个。

这里