2012-08-31 111 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