2012-08-31 110 views
-2

类方法是静态方法吗?这个论点是否属实?所以如果我们声明NSString,因为alloc是一个类的方法类方法和实例方法

NSString * hello = [[NSString alloc] init]; 类方法

[hello isEqualtoString:@“Hello”]; 实例方法

回答

0

可以认为类方法的作为类似于在C static方法++,如

[NSString alloc] <=> /* hypothetical */ NSString::alloc() 

但在幕后,有重大分歧。例如,在C++ static方法中,不能使用this;在Objective-C类方法中,self是完全有效的并且指向类对象。

2

面向对象编程一个类方法是这样的方法/函数被施加到/被叫的一类,而不是它的一个特定实例,即类的一个对象。 实例方法是直接在对象上调用的方法。

在某些语言中,每个类都由一个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 SOthis paragraph