Objective-C程序中函數名稱接口聲明之前的「+」和「 - 」之間的區別是什麼。例如:Objective-C中函數名稱前面的「+」和「 - 」的區別
- (void)continueSpeaking;
+ (NSArray *)availableVoices;
有什麼區別?
Objective-C程序中函數名稱接口聲明之前的「+」和「 - 」之間的區別是什麼。例如:Objective-C中函數名稱前面的「+」和「 - 」的區別
- (void)continueSpeaking;
+ (NSArray *)availableVoices;
有什麼區別?
+
定義了一類方法
類方法屬於的類本身,而不是實例的類的。
實施例:[AppDelegate someMethod]
-
限定實例方法
實施例來描述所不同的是-
方法上的對象進行操作,而+
方法在類自身操作[[[UIApplication sharedApplication] delegate] someMethod]
一種方式。
說你的類被命名爲MyClass
,並創建它的一個實例,並將其存儲到一個名爲myInstance
變量:
- (void)continueSpeaking
可以被稱爲像這樣:[myInstance continueSpeaking]
。
然而,該方法+ (NSArray *)availableVoices
只能被稱爲像這樣:[MyClass availableVoices]
您正在考慮Java。它們在Objective-C中被稱爲_class methods_,在類方法中有'self' - self'是類。例如,如果你的類有'+ [MyClass someMethod]'和'+ [MyClass someOtherMethod]'方法,你可以在'someMethod'中調用'[self someOtherMethod]'。 – Chuck 2010-04-09 22:54:33
請注意,標準'alloc'是一個返回實例的類方法,而'init'是一個實例方法。 – outis 2010-04-09 23:10:27
好的,所以對於c#括號內的其他人: + =靜態方法 – user230910 2015-05-17 10:30:44
而只是爲了完成:這是不是在所有iPhone具體,這是Objective-C的。 – 2010-04-09 22:46:36
@ user280556請接受答案,以便該問題不會在'未答覆'部分留下。 – 2010-04-11 21:44:23