📜  Objective-C函数

📅  最后修改于: 2020-11-03 15:54:31             🧑  作者: Mango


函数是一起执行任务的一组语句。每个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方法时,您需要定义函数。要使用方法,您将必须调用该函数来执行定义的任务。

当程序调用函数,程序控制将转移到被调用的方法。被调用的方法执行已定义的任务,并在执行其return语句或达到其函数结尾的右括号时,将程序控制权返回给主程序。

要调用方法,您只需要传递所需的参数以及方法名称,如果方法返回值,则可以存储返回的值。例如-

#import 

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

我保持最大值()函数main()函数沿着并遵守的源代码。在运行最终可执行文件时,它将产生以下结果-

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

功能参数

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

形式参数的行为类似于函数内部的其他局部变量,并在进入函数创建并在退出时销毁。

调用函数,可以通过两种方式将参数传递给函数-

Sr.No. Call Type & Description
1 Call by value

This method copies the actual value of an argument into the formal parameter of the function. In this case, changes made to the parameter inside the function have no effect on the argument.

2 Call by reference

This method copies the address of an argument into the formal parameter. Inside the function, the address is used to access the actual argument used in the call. This means that changes made to the parameter affect the argument.

默认情况下,Objective-C使用按值调用来传递参数。通常,这意味着函数中的代码不能更改用于调用该函数的参数,并且上述示例在调用max()函数使用了相同的方法。