类方法是静态方法吗?这个论点是否属实?所以如果我们声明NSString,因为alloc是一个类的方法类方法和实例方法
NSString * hello = [[NSString alloc] init]; 类方法
[hello isEqualtoString:@“Hello”]; 实例方法
类方法是静态方法吗?这个论点是否属实?所以如果我们声明NSString,因为alloc是一个类的方法类方法和实例方法
NSString * hello = [[NSString alloc] init]; 类方法
[hello isEqualtoString:@“Hello”]; 实例方法
可以认为类方法的作为类似于在C static
方法++,如
[NSString alloc] <=> /* hypothetical */ NSString::alloc()
但在幕后,有重大分歧。例如,在C++ static
方法中,不能使用this
;在Objective-C类方法中,self
是完全有效的并且指向类对象。
在面向对象编程一个类方法是这样的方法/函数被施加到/被叫的一类,而不是它的一个特定实例,即类的一个对象。 实例方法是直接在对象上调用的方法。
在某些语言中,每个类都由一个Class对象表示,因此一个类方法是该对象的一个实例方法。这对于应用反思和反思很有用。
在Objective-C类方法中,声明前使用符号+
来定义,而实例声明在其之前使用-
。这里有一个例子:
@interface Rectangle : NSObject
+ (void)join:(Rectangle *)firstRect withAnother:(Rectangle *)secondRect;
- (void)area;
@end
类方法中经常使用,当你不需要是指一个特定的对象,或者你必须改变所有的人,或者你只是需要一个功能不相关的地方到实例对象。
你说static
在你的问题。您可能指的是在声明类方法之前,具有关键字static的Java等语言。在objective-c中,关键字static与它的含义相同used in C。
作为参考,你可以看看this answer on SO或this paragraph。