位置:首页 > 高级语言 > Objective-C在线教程 > Objective-C 函数

Objective-C 函数

函数是一组语句一起执行任务。每一个Objective-C的程序有一个C函数main(),最常见的程序,可以定义附加功能。

可以分割成单独的函数的代码。如何分割代码在不同的功能,但逻辑上的划分通常是让每个函数执行特定任务。

函数声明告诉编译器函数的名称,返回类型和参数。函数定义提供在实际的函数体中。

基本上Objective-C中,我们调用函数作为方法。

Objective-C基础框架提供了许多内置程序可以调用的方法。例如,使用AppendString()方法可追加字符串到另一个字符串。

方法是已知的各种名称,如一个函数或子例程或过程等

定义一个方法

在Objective-C编程的方法定义的一般形式如下:

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

在Objective-C编程语言定义的方法的方法头和方法体。下面是所有部分的方法:

  • 返回类型: 方法可以返回一个值。 return_type是函数返回值的数据类型。有些方法执行所需的操作,不返回值。在这种情况下,return_type关键字是void。

  • 方法名称: 这是实际的方法名。方法名和参数表共同构成的方法签名。

  • 参数: 一个参数像一个占位符。当函数被调用时,你传递一个值的参数。这个值被称为实际参数或参数。参数列表是指的类型,顺序和数量的参数的方法。参数是可选的,方法可能不包含任何参数。

  • 链接参数: 连接的参数,使其更易于阅读和同时调用明确。

  • 方法体: 该方法的主体包含语句定义的方法用于做什么的集合。

例子:

以下是max()方法的源代码。这个方法有两个参数num1和num2,两者之间并返回最大:

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

方法声明:

方法声明告诉编译器函数名以及如何调用该方法。实际的正文的功能,是可以分别定义的。

方法声明有以下几个部分:

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

对于上述定义的函数max(),如下方法声明:

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

方法声明时,需要在一个源文件中定义的方法,并在另一个文件中调用该方法。在这种情况下,应该声明在上面的文件调用该函数的功能。

调用一个方法:

虽然创建一个Objective-C方法,能给什么功能做一个定义。要使用这个方法,必须调用该函数执行定义的任务。

当程序调用一个函数,程序的控制权转移到所谓的方法。定义被调用的方法执行任务,当其返回语句执行或达到其功能的结局结束大括号时,程序控制返回到主程序。

要调用一个方法,只需要通过所需的参数随着方法的名称,如果方法返回一个值,那么可以存储返回值。例如:

#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
", ret );
 
   return 0;
}

执行 max() 函数 及 main() 函数,编译源代码。在运行最终的可执行文件,它会产生以下结果:

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

函数参数:

如果一个函数使用的参数,它必须声明接受的参数值的变量。这些变量被称为形式参数的函数。

形式参数的行为就像其他的局部变量在函数内部,进入函数时创建和退出时销毁。

当调用一个函数,参数可以被传递给一个函数有两种方式:

调用类型 描述
按值调用 这种方法复制到正式参数的函数参数的实际值。在这种情况下,该函数内的参数所做的更改参数没有影响。
按引用调用 此方法参数的地址复制到正式的参数。在函数内部,地址用于访问实际的参数在调用中使用。这意味着参数所做的更改影响参数。

Objective-C的默认情况下,使用按值调用来传递参数。在一般情况下,这意味着在一个函数中的代码用来调用该函数的参数,和上述的例子,而不能用同样的方法改变调用max()函数。