2010-04-09 24 views
13

Objective-C程序中函數名稱接口聲明之前的「+」和「 - 」之間的區別是什麼。例如:Objective-C中函數名稱前面的「+」和「 - 」的區別

- (void)continueSpeaking; 

+ (NSArray *)availableVoices; 

有什麼區別?

+1

而只是爲了完成:這是不是在所有iPhone具體,這是Objective-C的。 – 2010-04-09 22:46:36

+0

@ user280556請接受答案,以便該問題不會在'未答覆'部分留下。 – 2010-04-11 21:44:23

回答

19

+定義了一類方法

類方法屬於的類本身,而不是實例的類的

實施例:[AppDelegate someMethod]

-限定實例方法

實施例來描述所不同的是-方法上的對象進行操作,而+方法在類自身操作[[[UIApplication sharedApplication] delegate] someMethod]

一種方式。

說你的類被命名爲MyClass,並創建它的一個實例,並將其存儲到一個名爲myInstance變量:

- (void)continueSpeaking可以被稱爲像這樣:[myInstance continueSpeaking]

然而,該方法+ (NSArray *)availableVoices只能被稱爲像這樣:[MyClass availableVoices]

+2

您正在考慮Java。它們在Objective-C中被稱爲_class methods_,在類方法中有'self' - self'是類。例如,如果你的類有'+ [MyClass someMethod]'和'+ [MyClass someOtherMethod]'方法,你可以在'someMethod'中調用'[self someOtherMethod]'。 – Chuck 2010-04-09 22:54:33

+3

請注意,標準'alloc'是一個返回實例的類方法,而'init'是一個實例方法。 – outis 2010-04-09 23:10:27

+0

好的,所以對於c#括號內的其他人: + =靜態方法 – user230910 2015-05-17 10:30:44

相關問題