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.