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()函数。