在 ObjC 中,方法名称前的单破折号表示它是实例方法。方法名称前的加号表示它是类方法。但是编程有什么区别?
3 回答
类方法和实例方法之间的区别在于,实例方法需要(通常)操作的类的实例。调用实例方法的消息必须发送到类的实例。
类方法最常见的单一用途可能是对象工厂。您发送给类的消息以创建根据您发送的参数配置的实例。例如,在 Cocoa 中,NSString 类有几个名为 stringWithSomethingOrOther: 的类方法,它们将创建一个新的 NSString 对象并将其交还给您。
另一方面,NSString也有许多实例方法——没有实际实例可以使用的操作实际上没有任何意义。一个常用的方法可能是 length 方法,它告诉您消息发送到的特定 NSString 实例中有多少个字符。
也看到这个。 类方法和实例方法有什么区别?
在对象上调用实例方法。在类上调用类方法。
例如这一行:
SomeClass *object = [[SomeClass alloc] init];
在这里您可以看到“alloc”适用于“SomeClass”而不是“object”。
鉴于:
[object callMyFunction];
将作用于“对象”而不是“类”。这是一个实例方法。
与这两者的主要区别在于前者,即在它仅由声明它的类的实例调用之前使用单个破折号,即必须创建该类的一个实例意味着该类的一个对象并且使用.
一个可以调用实例方法
在类方法中,后一种可以直接使用类名调用。要调用类方法,不需要任何对象。
请参考苹果开发者文档中的这个链接