Funzioni Objective-C

Una funzione è un gruppo di istruzioni che insieme eseguono un'attività. Ogni programma Objective-C ha una funzione C, che èmain()e tutti i programmi più banali possono definire funzioni aggiuntive.

Puoi suddividere il codice in funzioni separate. Come suddividere il codice tra le diverse funzioni dipende da te, ma logicamente la divisione di solito è in modo che ciascuna funzione svolga un compito specifico.

Una funzione declarationindica al compilatore il nome, il tipo restituito e i parametri di una funzione. Una funzionedefinition fornisce il corpo effettivo della funzione.

Fondamentalmente in Objective-C, chiamiamo la funzione come metodo.

Il framework di base Objective-C fornisce numerosi metodi incorporati che il programma può chiamare. Ad esempio, metodoappendString() per aggiungere una stringa a un'altra stringa.

Un metodo è noto con vari nomi come una funzione, una sottoprogramma o una procedura, ecc.

Definizione di un metodo

La forma generale della definizione di un metodo nel linguaggio di programmazione Objective-C è la seguente:

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

Una definizione di metodo nel linguaggio di programmazione Objective-C consiste in un'intestazione del metodo e un corpo del metodo . Ecco tutte le parti di un metodo:

  • Return Type- Un metodo può restituire un valore. Ilreturn_typeè il tipo di dati del valore restituito dalla funzione. Alcuni metodi eseguono le operazioni desiderate senza restituire un valore. In questo caso, return_type è la parola chiavevoid.

  • Method Name- Questo è il nome effettivo del metodo. Il nome del metodo e l'elenco dei parametri insieme costituiscono la firma del metodo.

  • Arguments- Un argomento è come un segnaposto. Quando viene richiamata una funzione, si passa un valore all'argomento. Questo valore viene indicato come parametro o argomento effettivo. L'elenco dei parametri si riferisce al tipo, all'ordine e al numero degli argomenti di un metodo. Gli argomenti sono facoltativi; ovvero, un metodo non può contenere argomenti.

  • Joining Argument - Un argomento di unione è quello di renderlo più facile da leggere e di renderlo chiaro mentre lo si chiama.

  • Method Body - Il corpo del metodo contiene una raccolta di istruzioni che definiscono ciò che fa il metodo.

Esempio

Di seguito è riportato il codice sorgente per un metodo chiamato max(). Questo metodo accetta due parametri num1 e num2 e restituisce il massimo tra i due -

/* 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; 
}

Dichiarazioni di metodo

Un metodo declarationindica al compilatore il nome di una funzione e come chiamare il metodo. Il corpo effettivo della funzione può essere definito separatamente.

Una dichiarazione di metodo ha le seguenti parti:

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

Per la funzione max () sopra definita, di seguito è riportata la dichiarazione del metodo:

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

La dichiarazione del metodo è richiesta quando si definisce un metodo in un file di origine e si chiama quel metodo in un altro file. In tal caso è necessario dichiarare la funzione all'inizio del file che chiama la funzione.

Chiamare un metodo

Durante la creazione di un metodo Objective-C, fornisci una definizione di ciò che la funzione deve fare. Per utilizzare un metodo, dovrai chiamare quella funzione per eseguire l'attività definita.

Quando un programma chiama una funzione, il controllo del programma viene trasferito al metodo chiamato. Un metodo chiamato esegue un'attività definita e quando viene eseguita la sua istruzione return o quando viene raggiunta la parentesi graffa di chiusura di fine funzione, restituisce il controllo del programma al programma principale.

Per chiamare un metodo, è sufficiente passare i parametri richiesti insieme al nome del metodo e, se il metodo restituisce un valore, è possibile memorizzare il valore restituito. Ad esempio:

#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;
}

Ho mantenuto la funzione max () insieme alla funzione main () e ho rispettato il codice sorgente. Durante l'esecuzione dell'eseguibile finale, produrrebbe il seguente risultato:

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

Argomenti della funzione

Se una funzione deve utilizzare argomenti, deve dichiarare variabili che accettano i valori degli argomenti. Queste variabili sono chiamateformal parameters della funzione.

I parametri formali si comportano come le altre variabili locali all'interno della funzione e vengono creati all'ingresso nella funzione e distrutti all'uscita.

Durante la chiamata a una funzione, ci sono due modi in cui gli argomenti possono essere passati a una funzione:

Sr.No. Tipo di chiamata e descrizione
1 Chiama per valore

Questo metodo copia il valore effettivo di un argomento nel parametro formale della funzione. In questo caso, le modifiche apportate al parametro all'interno della funzione non hanno effetto sull'argomento.

2 Chiama per riferimento

Questo metodo copia l'indirizzo di un argomento nel parametro formale. All'interno della funzione, l'indirizzo viene utilizzato per accedere all'argomento effettivo utilizzato nella chiamata. Ciò significa che le modifiche apportate al parametro influiscono sull'argomento.

Per impostazione predefinita, Objective-C utilizza call by valueper passare argomenti. In generale, questo significa che il codice all'interno di una funzione non può alterare gli argomenti utilizzati per chiamare la funzione, e l'esempio sopra menzionato durante la chiamata alla funzione max () utilizzava lo stesso metodo.