Funciones de Objective-C

Una función es un grupo de declaraciones que juntas realizan una tarea. Cada programa Objective-C tiene una función C, que esmain(), y todos los programas más triviales pueden definir funciones adicionales.

Puede dividir su código en funciones separadas. La forma en que divide su código entre las diferentes funciones depende de usted, pero lógicamente la división suele ser para que cada función realice una tarea específica.

Una función declarationle dice al compilador sobre el nombre de una función, el tipo de retorno y los parámetros. Una funcióndefinition proporciona el cuerpo real de la función.

Básicamente, en Objective-C, llamamos a la función como método.

El marco de trabajo básico de Objective-C proporciona numerosos métodos integrados que su programa puede llamar. Por ejemplo, métodoappendString() para agregar una cadena a otra cadena.

Se conoce un método con varios nombres como una función o una subrutina o un procedimiento, etc.

Definición de un método

La forma general de una definición de método en el lenguaje de programación Objective-C es la siguiente:

- (return_type) method_name:( argumentType1 )argumentName1 
joiningArgument2:( argumentType2 )argumentName2 ... 
joiningArgumentn:( argumentTypen )argumentNamen {
   body of the function
}

Una definición de método en el lenguaje de programación Objective-C consta de un encabezado de método y un cuerpo de método . Aquí están todas las partes de un método:

  • Return Type- Un método puede devolver un valor. losreturn_typees el tipo de datos del valor que devuelve la función. Algunos métodos realizan las operaciones deseadas sin devolver un valor. En este caso, return_type es la palabra clavevoid.

  • Method Name- Este es el nombre real del método. El nombre del método y la lista de parámetros juntos constituyen la firma del método.

  • Arguments- Un argumento es como un marcador de posición. Cuando se invoca una función, se pasa un valor al argumento. Este valor se conoce como parámetro o argumento real. La lista de parámetros se refiere al tipo, orden y número de argumentos de un método. Los argumentos son opcionales; es decir, un método puede no contener ningún argumento.

  • Joining Argument - Un argumento de unión sirve para facilitar la lectura y dejarlo claro al llamarlo.

  • Method Body - El cuerpo del método contiene una colección de declaraciones que definen lo que hace el método.

Ejemplo

A continuación se muestra el código fuente de un método llamado max(). Este método toma dos parámetros num1 y num2 y devuelve el máximo entre los dos -

/* function returning the max between two numbers */
- (int) max:(int) num1 secondNumber:(int) num2 {
   
   /* local variable declaration */
   int result;
 
   if (num1 > num2) {
      result = num1;
   } else {
      result = num2;
   }
 
   return result; 
}

Declaraciones de métodos

Un método declarationle dice al compilador sobre el nombre de una función y cómo llamar al método. El cuerpo real de la función se puede definir por separado.

Una declaración de método tiene las siguientes partes:

- (return_type) function_name:( argumentType1 )argumentName1 
joiningArgument2:( argumentType2 )argumentName2 ... 
joiningArgumentn:( argumentTypen )argumentNamen;

Para la función max () definida anteriormente, la siguiente es la declaración del método:

-(int) max:(int)num1 andNum2:(int)num2;

La declaración de método es necesaria cuando define un método en un archivo fuente y llama a ese método en otro archivo. En tal caso, debe declarar la función en la parte superior del archivo que llama a la función.

Llamar a un método

Al crear un método Objective-C, das una definición de lo que tiene que hacer la función. Para utilizar un método, tendrá que llamar a esa función para realizar la tarea definida.

Cuando un programa llama a una función, el control del programa se transfiere al método llamado. Un método llamado realiza una tarea definida, y cuando se ejecuta su declaración de retorno o cuando se alcanza su llave de cierre de fin de función, devuelve el control del programa al programa principal.

Para llamar a un método, simplemente necesita pasar los parámetros requeridos junto con el nombre del método, y si el método devuelve un valor, entonces puede almacenar el valor devuelto. Por ejemplo

#import <Foundation/Foundation.h>

@interface SampleClass:NSObject
/* method declaration */
- (int)max:(int)num1 andNum2:(int)num2;
@end

@implementation SampleClass

/* method returning the max between two numbers */
- (int)max:(int)num1 andNum2:(int)num2 {

   /* local variable declaration */
   int result;
 
   if (num1 > num2) {
      result = num1;
   } else {
      result = num2;
   }
 
   return result; 
}

@end

int main () {
   
   /* local variable definition */
   int a = 100;
   int b = 200;
   int ret;
   
   SampleClass *sampleClass = [[SampleClass alloc]init];

   /* calling a method to get max value */
   ret = [sampleClass max:a andNum2:b];
 
   NSLog(@"Max value is : %d\n", ret );
   return 0;
}

Mantuve la función max () junto con la función main () y cumplí con el código fuente. Mientras se ejecuta el ejecutable final, produciría el siguiente resultado:

2013-09-07 22:28:45.912 demo[26080] Max value is : 200

Argumentos de función

Si una función va a utilizar argumentos, debe declarar variables que acepten los valores de los argumentos. Estas variables se denominanformal parameters de la función.

Los parámetros formales se comportan como otras variables locales dentro de la función y se crean al entrar en la función y se destruyen al salir.

Al llamar a una función, hay dos formas en que se pueden pasar argumentos a una función:

No Señor. Tipo de llamada y descripción
1 Llamar por valor

Este método copia el valor real de un argumento en el parámetro formal de la función. En este caso, los cambios realizados en el parámetro dentro de la función no tienen ningún efecto sobre el argumento.

2 Llamar por referencia

Este método copia la dirección de un argumento en el parámetro formal. Dentro de la función, la dirección se usa para acceder al argumento real usado en la llamada. Esto significa que los cambios realizados en el parámetro afectan el argumento.

Por defecto, Objective-C usa call by valuepara pasar argumentos. En general, esto significa que el código dentro de una función no puede alterar los argumentos usados ​​para llamar a la función, y el ejemplo mencionado anteriormente al llamar a la función max () usó el mismo método.