En Objective-C, los métodos se dividen en dos categorías principales: métodos de clase y métodos de instancia. Comprender la diferencia entre estos dos tipos de métodos es crucial para aprovechar al máximo la programación orientada a objetos en Objective-C.
Métodos de Clase
Definición
Los métodos de clase son aquellos que se asocian con la clase en sí misma, no con una instancia específica de la clase. Se utilizan principalmente para operaciones que no dependen del estado de una instancia particular.
Sintaxis
Para definir un método de clase, se utiliza el signo +
antes de la declaración del método en la interfaz y la implementación.
// Interfaz @interface MiClase : NSObject + (void)metodoDeClase; @end // Implementación @implementation MiClase + (void)metodoDeClase { NSLog(@"Este es un método de clase."); } @end
Llamada a Métodos de Clase
Los métodos de clase se llaman directamente en la clase, no en una instancia de la clase.
Métodos de Instancia
Definición
Los métodos de instancia son aquellos que se asocian con una instancia específica de una clase. Estos métodos pueden acceder y modificar el estado de la instancia.
Sintaxis
Para definir un método de instancia, se utiliza el signo -
antes de la declaración del método en la interfaz y la implementación.
// Interfaz @interface MiClase : NSObject - (void)metodoDeInstancia; @end // Implementación @implementation MiClase - (void)metodoDeInstancia { NSLog(@"Este es un método de instancia."); } @end
Llamada a Métodos de Instancia
Los métodos de instancia se llaman en una instancia específica de la clase.
Comparación de Métodos de Clase e Instancia
Característica | Métodos de Clase | Métodos de Instancia |
---|---|---|
Definición | + antes del nombre del método |
- antes del nombre del método |
Asociación | Con la clase | Con una instancia específica |
Acceso a propiedades | No accede a propiedades de instancia | Puede acceder y modificar propiedades de instancia |
Llamada | [MiClase metodoDeClase] |
[miObjeto metodoDeInstancia] |
Ejemplo Práctico
Vamos a crear una clase Calculadora
que tenga tanto métodos de clase como de instancia.
// Interfaz @interface Calculadora : NSObject + (int)sumaConNumero1:(int)num1 numero2:(int)num2; - (int)restaConNumero1:(int)num1 numero2:(int)num2; @end // Implementación @implementation Calculadora + (int)sumaConNumero1:(int)num1 numero2:(int)num2 { return num1 + num2; } - (int)restaConNumero1:(int)num1 numero2:(int)num2 { return num1 - num2; } @end // Uso int resultadoSuma = [Calculadora sumaConNumero1:5 numero2:3]; NSLog(@"Resultado de la suma: %d", resultadoSuma); Calculadora *miCalculadora = [[Calculadora alloc] init]; int resultadoResta = [miCalculadora restaConNumero1:5 numero2:3]; NSLog(@"Resultado de la resta: %d", resultadoResta);
Ejercicio Práctico
Ejercicio
- Crea una clase llamada
Conversor
que tenga un método de clase para convertir grados Celsius a Fahrenheit y un método de instancia para convertir grados Fahrenheit a Celsius. - Implementa los métodos y prueba su funcionamiento.
Solución
// Interfaz @interface Conversor : NSObject + (float)celsiusAFahrenheit:(float)celsius; - (float)fahrenheitACelsius:(float)fahrenheit; @end // Implementación @implementation Conversor + (float)celsiusAFahrenheit:(float)celsius { return (celsius * 9/5) + 32; } - (float)fahrenheitACelsius:(float)fahrenheit { return (fahrenheit - 32) * 5/9; } @end // Uso float fahrenheit = [Conversor celsiusAFahrenheit:25]; NSLog(@"25 grados Celsius son %f grados Fahrenheit", fahrenheit); Conversor *miConversor = [[Conversor alloc] init]; float celsius = [miConversor fahrenheitACelsius:77]; NSLog(@"77 grados Fahrenheit son %f grados Celsius", celsius);
Conclusión
En esta sección, hemos aprendido la diferencia entre métodos de clase e instancia en Objective-C, cómo definirlos, y cómo llamarlos. Los métodos de clase se utilizan para operaciones que no dependen del estado de una instancia, mientras que los métodos de instancia se utilizan para operaciones que sí dependen del estado de una instancia específica. Con esta base, estás preparado para avanzar a temas más complejos en la programación orientada a objetos en Objective-C.
Curso de Programación en Objective-C
Módulo 1: Introducción a Objective-C
- Introducción a Objective-C
- Configuración del Entorno de Desarrollo
- Sintaxis y Estructura Básica
- Tipos de Datos y Variables
- Operadores y Expresiones
Módulo 2: Flujo de Control
Módulo 3: Funciones y Métodos
- Definición y Llamada de Funciones
- Parámetros de Función y Valores de Retorno
- Sintaxis de Métodos en Objective-C
- Métodos de Clase e Instancia
Módulo 4: Programación Orientada a Objetos
Módulo 5: Gestión de Memoria
- Introducción a la Gestión de Memoria
- Conteo Automático de Referencias (ARC)
- Retención y Liberación Manual
- Mejores Prácticas de Gestión de Memoria
Módulo 6: Temas Avanzados
Módulo 7: Trabajo con Datos
- Manejo de Archivos
- Serialización y Deserialización
- Conceptos Básicos de Redes
- Trabajo con JSON y XML