热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ObjectiveC函数

函数是一组一起执行任务的语句。每个Objective-C程序都有一个C函数,也就是main()函数,所有最简单的程序都可以定义为函数。可将代码划分为单独

函数是一组一起执行任务的语句。 每个Objective-C程序都有一个C函数,也就是main()函数,所有最简单的程序都可以定义为函数。

可将代码划分为单独的函数。如何在不同的函数之间划分代码取决于程序员,但逻辑上这个划分通常是这样,每个函数执行一个特定的任务。

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

在Objective-C中,基本上会将函数称为方法。

Objective-C基础框架提供了程序可以调用的许多内置方法。 例如,appendString()方法将字符串附加到另一个字符串。
已知一种方法具有各种名称,如函数或子程序或程序等。


1. 定义方法

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()的方法的源代码。 这个方法有两个参数num1num2,并返回两个参数的最大值 -

/* 返回两个参数的最大值 */
- (int) max:(int) num1 secondNumber:(int) num2 {
/* 局部变量声明 */
int result;
if (num1 > num2) {
result = num1;
} else {
result = num2;
}
return result;
}


2. 方法声明

方法声明告诉编译器有关函数名称以及如何调用该方法的信息。 函数的实际主体可以单独定义。

方法声明包含以下部分 -

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

对于上面定义的max()函数,以下是方法声明 -

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

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


3. 调用方法

在创建Objective-C方法时,可以定义函数必须执行的操作。 要使用方法,必须调用该函数来执行定义的任务。
当程序调用函数时,程序控制将转移到被调用的方法。 被调用的方法执行已定义的任务,当执行其返回语句或达到其函数结束右括号时,它将程序控制返回给主程序。
要调用方法,只需要传递必需的参数和方法名称,如果方法返回值,则可以存储返回的值。 例如 -

#import
@interface SampleClass:NSObject
/* 方法声明 */
- (int)max:(int)num1 andNum2:(int)num2;
@end
@implementation SampleClass
/* 返回两个数的最大值 */
- (int)max:(int)num1 andNum2:(int)num2 {
/* 声明局部变量 */
int result;
if (num1 > num2) {
result = num1;
} else {
result = num2;
}
return result;
}
@end
int main () {
/* 定义局部变量 */
int a = 119;
int b = 199;
int ret;
SampleClass *sampleClass = [[SampleClass alloc]init];
/* 调用方法来获取最大值 */
ret = [sampleClass max:a andNum2:b];
NSLog(@"Max value is : %d\n", ret );
return 0;
}

执行上面示例代码,得到以下结果:

2018-11-15 01:18:49.962 main[43680] Max value is : 199


4. 函数参数

这些变量称为函数的形式参数。形式参数的行为与函数内部的其他局部变量相似,并在进入函数时创建,并在退出时销毁。
在调用函数时,有两种方法可以将参数传递给函数 -





















编号调用类型描述
1按值调用此方法将参数的实际值复制到函数的形式参数中。在这种情况中,对函数内部参数所做的更改不会对参数产生影响。
2按引用调用此方法将参数的地址复制到形式参数中。在函数内部,该地址用于访问调用中使用的实际参数。对参数所做的更改会影响参数。

默认情况下,Objective-C使用按值调用来传递参数。 所以函数内的代码改变用于调用函数的参数不会反应到函数外部,而上述示例在调用max()函数时使用相同的方法。


推荐阅读
  • 异常要理解Java异常处理是如何工作的,需要掌握一下三种异常类型:检查性异常:最具代表性的检查性异常是用户错误或问题引起的异常ÿ ... [详细]
  • 本文深入探讨了 Java 编程语言的基础,特别是其跨平台特性和 JVM 的工作原理。通过介绍 Java 的发展历史和生态系统,帮助初学者理解如何编写并运行第一个 Java 程序。 ... [详细]
  • 并发编程:深入理解设计原理与优化
    本文探讨了并发编程中的关键设计原则,特别是Java内存模型(JMM)的happens-before规则及其对多线程编程的影响。文章详细介绍了DCL双重检查锁定模式的问题及解决方案,并总结了不同处理器和内存模型之间的关系,旨在为程序员提供更深入的理解和最佳实践。 ... [详细]
  • 本文总结了Java程序设计第一周的学习内容,涵盖语言基础、编译解释过程及基本数据类型等核心知识点。 ... [详细]
  • 本文详细介绍了C语言的起源、发展及其标准化过程,涵盖了从早期的BCPL和B语言到现代C语言的演变,并探讨了其在操作系统和跨平台编程中的重要地位。 ... [详细]
  • 本文探讨了Java编程的核心要素,特别是其面向对象的特性,并详细介绍了Java虚拟机、类装载器体系结构、Java类文件和Java API等关键技术。这些技术使得Java成为一种功能强大且易于使用的编程语言。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 作为一名在大型手机游戏公司工作的程序员,尽管主要负责游戏逻辑和内容的开发,但对iOS底层开发接触较少。现在有了iPhone和可以虚拟MAC环境的电脑,希望能找到有效的iOS开发学习路径。 ... [详细]
  • 本文详细介绍了如何在iOS5中创建和理解简单的Hello World应用,包括Interface Builder的使用、Objective-C源代码文件的结构以及事件处理机制。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 文件描述符、文件句柄与打开文件之间的关联解析
    本文详细探讨了文件描述符、文件句柄和打开文件之间的关系,通过具体示例解释了它们在操作系统中的作用及其相互影响。 ... [详细]
  • ###问题删除目录时遇到错误提示:rm:cannotremoveusrlocaltmp’:Directorynotempty即使用rm-rf,还是会出现 ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
  • 本文详细介绍了如何在 Windows 环境下使用 node-gyp 工具进行 Node.js 本地扩展的编译和配置,涵盖从环境搭建到代码实现的全过程。 ... [详细]
  • 本文介绍了多个关于JavaScript的书籍资源、实用工具和编程实例,涵盖从入门到进阶的各个阶段,帮助读者全面提升JavaScript编程能力。 ... [详细]
author-avatar
勇敢的无心睡眠888
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有