2009-05-05 10 views

Respuesta

21

Objective-c hace esa distinción por usted. Los mensajes deben enviarse a objetos, pero las funciones se pueden usar en cualquier momento.

messages:

mensajes de Objective-C sólo se pueden enviar a los objetos, y el sistema de mensajería es la forma para realizar llamadas a los métodos de una clase.

Ejemplo:

// a class interface definition 
// including a method named aMethod 
@interface ANObject 
{ 

} 
- (void)aMethod; 
@end 


// a message sent to that object: 
ANObject * myObject = [[ANObject alloc] init]; 
[myObject aMethod]; // <-- message 
[myObject release]; 

funciones:

Objective-C hereda todo el lenguaje C, por lo que se admiten las llamadas de función de estilo C, e incluso alentado, cuando la situación lo requiera. Los objetos Objective-C simplemente se pasan como punteros, por lo que aún puede pasarlos a funciones como argumentos. Por supuesto, deben respetarse las precauciones y reglas habituales sobre pasar punteros a las funciones.

Ejemplo:

// a regular C-style function 
void someFunction(ANObject * argument) 
{ 
    // do something here... 
} 


// and how to call it: 
someFunction(someObject); 

cuándo utilizar cada uno?

Use mensajes/métodos cuando desee acceder a un cierto objeto/clase. Claro puedes estar accediendo a la longitud de un NSString:

int stringLength = [myString length]; 

Establecer un valor de una propiedad:

[myObject setHidden:YES]; 

O decirle a un objeto para realizar alguna tarea:

[myAccount withdrawMoneyAndDriveToMexico]; 

Utilice C -style funciones cuando desea realizar una tarea que no pertenece a una clase; algo que debería estar solo. Buenos ejemplos serían funciones matemáticas tales como:

double degrees = ConvertRadiansToDegrees(radians); 
+0

Gracias por su post. – Jake

4

Básicamente, utilice mensajes siempre que se trate de un componente de Objective C; más o menos cada vez que usa un tipo NS *.

Debajo de las cubiertas usted está utilizando esencialmente llamadas de función C en cualquier caso; la implementación original del Objetivo C fue un preprocesador de C. Pero el objetivo de usar Objective C es obtener la sintaxis de Smalltalk, que es lo que tienes en cualquier lugar dentro de [].

2

Has hecho muchas preguntas sobre Java; tal vez una analogía de Java ayude.Donde uno usaría un método en Java, use un mensaje en Objective-C. Donde uno usaría un método estático en Java, use un método de clase en Objective-C. Si se encuentra creando paquetes de utilidad en Java que están llenos de métodos estáticos, eso es algo que podría tener sentido como una función en Objective-C.

Y, por supuesto, puede tener sentido si también estás haciendo cosas extrañas con Objective-C++.

Cuestiones relacionadas