Funções Objective-C

Uma função é um grupo de instruções que, juntas, executam uma tarefa. Cada programa Objective-C tem uma função C, que émain(), e todos os programas mais triviais podem definir funções adicionais.

Você pode dividir seu código em funções separadas. Como você divide seu código entre diferentes funções é com você, mas logicamente a divisão geralmente é para que cada função execute uma tarefa específica.

Uma função declarationinforma ao compilador o nome, o tipo de retorno e os parâmetros de uma função. Uma funçãodefinition fornece o corpo real da função.

Basicamente em Objective-C, chamamos a função como método.

A estrutura de base Objective-C fornece vários métodos integrados que seu programa pode chamar. Por exemplo, métodoappendString() para anexar string a outra string.

Um método é conhecido com vários nomes, como uma função ou uma sub-rotina ou um procedimento, etc.

Definindo um Método

A forma geral de definição de método na linguagem de programação Objective-C é a seguinte -

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

Uma definição de método na linguagem de programação Objective-C consiste em um cabeçalho de método e um corpo de método . Aqui estão todas as partes de um método -

  • Return Type- Um método pode retornar um valor. oreturn_typeé o tipo de dados do valor que a função retorna. Alguns métodos realizam as operações desejadas sem retornar um valor. Neste caso, o return_type é a palavra-chavevoid.

  • Method Name- Este é o nome real do método. O nome do método e a lista de parâmetros juntos constituem a assinatura do método.

  • Arguments- Um argumento é como um espaço reservado. Quando uma função é chamada, você passa um valor para o argumento. Esse valor é conhecido como parâmetro ou argumento real. A lista de parâmetros se refere ao tipo, ordem e número dos argumentos de um método. Os argumentos são opcionais; ou seja, um método não pode conter nenhum argumento.

  • Joining Argument - Um argumento de união é para torná-lo mais fácil de ler e torná-lo claro ao chamá-lo.

  • Method Body - O corpo do método contém uma coleção de instruções que definem o que o método faz.

Exemplo

A seguir está o código-fonte de um método chamado max(). Este método usa dois parâmetros num1 e num2 e retorna o máximo entre os dois -

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

Declarações de método

Um método declarationinforma ao compilador sobre o nome de uma função e como chamar o método. O corpo real da função pode ser definido separadamente.

Uma declaração de método tem as seguintes partes -

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

Para a função max () definida acima, a seguir está a declaração do método -

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

A declaração do método é necessária quando você define um método em um arquivo de origem e chama esse método em outro arquivo. Nesse caso, você deve declarar a função na parte superior do arquivo que está chamando a função.

Chamando um método

Ao criar um método Objective-C, você dá uma definição do que a função deve fazer. Para usar um método, você terá que chamar essa função para executar a tarefa definida.

Quando um programa chama uma função, o controle do programa é transferido para o método chamado. Um método chamado executa uma tarefa definida e, quando sua instrução de retorno é executada ou quando sua chave de fechamento de finalização de função é atingida, ele retorna o controle do programa ao programa principal.

Para chamar um método, você simplesmente precisa passar os parâmetros necessários junto com o nome do método e, se o método retornar um valor, você pode armazenar o valor retornado. Por exemplo -

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

Eu mantive a função max () junto com a função main () e compilei o código-fonte. Durante a execução do executável final, ele produziria o seguinte resultado -

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

Argumentos de função

Se uma função deve usar argumentos, ela deve declarar variáveis ​​que aceitam os valores dos argumentos. Essas variáveis ​​são chamadas deformal parameters da função.

Os parâmetros formais se comportam como outras variáveis ​​locais dentro da função e são criados na entrada na função e destruídos na saída.

Ao chamar uma função, existem duas maneiras de os argumentos serem passados ​​para uma função -

Sr. Não. Tipo e descrição da chamada
1 Chamada por valor

Este método copia o valor real de um argumento para o parâmetro formal da função. Nesse caso, as alterações feitas no parâmetro dentro da função não afetam o argumento.

2 Chamada por referência

Este método copia o endereço de um argumento no parâmetro formal. Dentro da função, o endereço é usado para acessar o argumento real usado na chamada. Isso significa que as alterações feitas no parâmetro afetam o argumento.

Por padrão, Objective-C usa call by valuepara passar argumentos. Em geral, isso significa que o código dentro de uma função não pode alterar os argumentos usados ​​para chamar a função e o exemplo mencionado acima ao chamar a função max () usou o mesmo método.