類方法是靜態方法嗎?這個論點是否屬實?所以如果我們聲明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。