“类方法”和“静态方法”有什么区别?

我使用过几种不同的语言,例如Java,C#和Objective-C。

在大多数语言中,不需要对象实例的方法称为静态方法。但是,涉及到Objective-C时,有些人在调用静态方法时会感到防御,他们希望您将其称为类方法。

为什么将它们称为类方法而不是静态方法?静态方法和类方法有什么区别?


FFIVE
浏览 1370回答 3
3回答

潇湘沐

尽管实际上大多数时候类方法和静态方法是相同的,但是它们是不同的。使用静态方法,该类充当名称空间限定符。对于类方法,类本身是一个对象,因此类方法对于类对象而言与实例方法对实例的作用完全相同。因此,您可以执行以下操作@interface TestClass : NSObject+ (void)classOrInstanceMethod;- (void)classOrInstanceMethod;@end...NSArray * arr = [NSArray arrayWithObjects:                        [[[TestClass alloc] init] autorelease],                        [TestClass class],                        nil];for( id obj in arr )    [obj classOrInstanceMethod];调用哪个版本的classOrInstanceMethod取决于obj是类对象还是and实例。如果您熟悉工厂类模式,则此模式是Objective-C语言的一部分。
打开App,查看更多内容
随时随地看视频慕课网APP