类方法是静态方法吗?这个论点是真的吗?所以如果我们声明 NSString 因为 alloc 是一个类方法
NSString *hello = [[NSString alloc] init]; 类方法
[你好 isEqualtoString:@"Hello"]; 实例方法
类方法是静态方法吗?这个论点是真的吗?所以如果我们声明 NSString 因为 alloc 是一个类方法
NSString *hello = [[NSString alloc] init]; 类方法
[你好 isEqualtoString:@"Hello"]; 实例方法
在面向对象编程中,类方法是应用于/由类调用的方法/函数,而不是它的特定实例,即该类的对象。实例方法是直接在对象上调用的方法。
在某些语言中,每个类都由一个 Class 对象表示,因此类方法是该对象的实例方法。这对于应用反射和内省很有用。
在objective-c 中,类方法是通过使用+
其声明之前的符号来定义的,而实例方法则使用-
它们之前的符号。这是一个例子:
@interface Rectangle : NSObject
+ (void)join:(Rectangle *)firstRect withAnother:(Rectangle *)secondRect;
- (void)area;
@end
当您不需要引用特定对象时经常使用类方法,或者您必须更改所有这些方法,或者您只需要一个与实例对象无关的函数的位置。
你static
在你的问题中说。您可能指的是 Java 之类的语言,其关键字 static 位于类方法的声明之前。在 objective-c 中,关键字 static 与C中使用的含义相同。
您可以将类方法视为类似于static
C++ 中的方法,如
[NSString alloc] <=> /* hypothetical */ NSString::alloc()
但在幕后,存在重大差异。例如,在 C++static
方法中,您不能使用this
; 在 Objective-C 类方法中,self
是完全有效的并且引用类对象。