2010-04-09 8 views
13

Cuál es la diferencia entre "+" y "-" antes de la declaración de interfaz de nombre de función en un programa Objective-C. Ejemplo:Diferencia entre "+" y "-" antes del nombre de la función en Objective-C

- (void)continueSpeaking; 

+ (NSArray *)availableVoices; 

¿Cuál es la diferencia?

+1

Y sólo para estar completa: Esto no es en absoluto iPhone específica, esto es Objective-C. –

+0

@ user280556 Acepte la respuesta para que la pregunta no se quede en la sección "Sin respuesta". –

Respuesta

19

+ define un método de clase

métodos de clase pertenecen a la clase sí mismo, no casos de la clase.

Ejemplo: [AppDelegate someMethod]

- define un método de instancia

Ejemplo [[[UIApplication sharedApplication] delegate] someMethod]

Una forma de describir la diferencia es que - métodos operan sobre los objetos, mientras que + métodos operan en la propia clase.

Digamos que su categoría se nombró MyClass, y se crea una instancia de ella y se almacena en una variable llamada myInstance:

- (void)continueSpeaking se puede llamar así: [myInstance continueSpeaking].

Sin embargo, el método + (NSArray *)availableVoices sólo se puede llamar así: [MyClass availableVoices]

+2

Estás pensando en Java. Se les llama _métodos de clase_ en Objective-C, y hay un 'self' en un método de clase -' self' es la clase. Entonces, por ejemplo, si su clase tiene los métodos '+ [MyClass someMethod]' y '+ [MyClass someOtherMethod]', puede llamar a '[self someOtherMethod]' desde dentro de 'someMethod'. – Chuck

+3

Tenga en cuenta que el estándar 'alloc' es un método de clase que devuelve una instancia, mientras que' init' es un método de instancia. – outis

+0

bien, entonces para otros con un C# brackground: + = Método estático – user230910

Cuestiones relacionadas