¿Cuándo debo usar los mensajes frente a las funciones de estilo C?Mensajes al estilo de Smalltalk frente a las funciones de estilo C
Respuesta
Objective-c hace esa distinción por usted. Los mensajes deben enviarse a objetos, pero las funciones se pueden usar en cualquier momento.
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);
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 [].
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++.
- 1. convirtiendo cadena de estilo c a cadena de estilo C++
- 2. Cambiando los comentarios del estilo C++ al estilo C
- 3. forma libre puntos frente estilo
- 4. Color de fuente HTML/CSS frente al estilo de trama
- 5. C++: funciones virtuales privadas, frente a las funciones virtuales puras
- 6. altura frente a estilo de altura de línea
- 7. estilo de código - 'esconde' funciones dentro de otras funciones
- 8. Perfil de usuario incorporado de ASP.NET frente a las tablas/clase de usuario de estilo anterior
- 9. Tiempo de diseño de WPF frente a las diferencias de estilo de ejecución con disparadores
- 10. ¿Hay una versión de Smalltalk con el envío de mensaje distribuido de estilo Erlang?
- 11. Estilo Scala: ¿qué tan lejos anidar las funciones?
- 12. Guía de estilo para C#?
- 13. Estilo de codificación Java, variables locales frente a llamadas al método repetido
- 14. ¿Utiliza macros C para crear un código de estilo C que se asigna a llamadas de mensajes de Objective-C?
- 15. Aplicar estilo solo al primer nivel de las etiquetas td
- 16. ¿Cuál es el estilo dominante para la paréntesis de las llamadas a funciones de Ruby?
- 17. Programación funcional en C++ 11, estilo F #
- 18. Colas de mensajes frente a sockets
- 19. C# Agregar estilo a un control
- 20. Comprobador de estilo de codificación para C
- 21. Interpolación de variables dentro de las funciones de formato de estilo printf
- 22. C# Acceso al estilo del indexador de propiedades del objeto
- 23. C++ en lugar de C-estilo arroja
- 24. ¿Cómo agrego estilo al contenido en JavaScript?
- 25. ¿Aplicar estilo al primer niño?
- 26. Agregar estilo al Editor Para
- 27. iteradores de estilo de Python en C
- 28. buen estilo c al verificar muchos valores devueltos
- 29. Cambiar estilo UiBinder a otro estilo UiBinder Programativamente
- 30. coincidencia de patrones de estilo en C++?
Gracias por su post. – Jake