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