2011-07-12 12 views
23

¿Hay alguna diferencia dramática entre funciones y métodos en Objective -C?objetivo c diferencia entre funciones y métodos

+0

¿Estás preguntando cuál es la diferencia entre bloques, funciones y métodos? – nil

+1

No, estaba preguntando "¿hay alguna diferencia dramática entre la función y el método?" – NCFUSN

+2

Bien, entonces las cosas de los bloques en la pregunta eran irrelevantes. – nil

Respuesta

71

Primero, soy un principiante en Objective-C, pero puedo decir lo que sé.

funciones son bloques de código que no están relacionados con un objeto/clase, simplemente heredado de c, y que los llaman en la forma:

// declaration 
int fooFunction() { 
    return 0; 
} 

// call 
int a; 
a = fooFunction(); 

Mientras que los métodos están asociadas a la clase/instancia (objeto) y se tiene que decirle a la clase/objeto que los ejecute:

// declaration 
- (int)fooMethod { 
    return 0; 
} 

// call 
int a; 
a = [someObjectOfThisClass fooMethod]; 
+1

Gracias MByD. Respuesta corta y clara. – NCFUSN

+0

@MByD, solo un pequeño punto aquí, Python tiene funciones y métodos. –

+0

@Fiorze - mi error, eliminar parte engañosa ... – MByD

5

Es incluso más simple; un método es solo una función C, siendo los dos primeros argumentos el objetivo de la llamada al método y al selector que se llama, respectivamente.

I.e. cada sitio de llamada de método único puede volver a escribirse como una llamada de función C equivalente sin ninguna diferencia en el comportamiento.


En respuesta profundidad aquí: Why [object doSomething] and not [*object doSomething]? comenzar con el párrafo que dice: "Volviendo a las raíces del preprocesador C de la lengua, se puede traducir cada llamada de método a una línea equivalente de C".

+0

que es interesante. ¿Puedes mostrar un ejemplo de eso y en qué paso se convierte en una llamada a función simple? también, ¿me puede indicar algunos materiales sobre eso? – MByD

+0

Muchas gracias por su respuesta. – NCFUSN

Cuestiones relacionadas