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

Objectivec块语法

oc中有种语法叫块,块的作用通常用来回调,例如c语言的qsort函数就需要传入一个自定义函数(实际是函数的地址)࿰

oc中有种语法叫 块  ,块的作用通常用来回调,例如 c语言的 qsort函数就需要传入一个自定义函数(实际是函数的地址),qsort函数通过调用这个自定义函数来确定两个要比较内容的大小,由于java中没有指针,所以java中经常采用匿名内部类来实现,oc的块可以说是一个匿名的函数。


定义块的语法格式如下

^ [ 返回值类型 ] (形参类型1   参数1,形参类型2  参数2, 。。。){


}


这种定义跟c语言中函数定义很像,只不过前面多了一个^  ,而且返回值类型是可选的,即  写不写都行,同时块不需要声明   块  名称。


定义块时可以赋值给一个变量,以便以后能多次调用该块

例如:

 

int (^ fun) (double , double ); // 定义块变量 funfun = ^ int ( double num1 , double num2 ) {return num1 > num2 ;};接下来就可以这样调用了 int isBig= fun(1.2 ,2.0);NSLog(@"%d ",isBig);



还可以使用匿名的方式(类似java匿名内部类) :

#import void show(NSString*str, NSString* (^ decorate )(NSString*) ){NSString*ss=decorate(str);NSLog(ss);
}
int main(int argc,const char * argv[]) {@autoreleasepool {show(@"haha" , ^ NSString* ( NSString* ss ){return [ssstringByAppendingString: @"--no name function"];});}return 0;
}








例如我们要实现一个通用的排序工具,其他用户只要简单的调用一下就可以排序,但只有用户知道自己要比较的大小,所以比较的功能可以留给用户来实现,那我们只需要接受用户要比较的参数数组,和一个符合我们特定要求的比较函数或块 就可以了,让用户自己实现这个比较函数或块。 






推荐阅读
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 本文详细介绍了C语言中的基本数据类型,包括整型、浮点型、字符型及其各自的子类型,并探讨了这些类型在不同编译环境下的表现。 ... [详细]
  • 本文介绍了如何使用Objective-C语言遍历指定文件夹,并根据文件扩展名来判断文件类型的方法。代码示例中通过创建一个文件管理器实例,利用目录枚举器遍历文件夹中的所有项,筛选出特定类型的文件。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 题目Link题目学习link1题目学习link2题目学习link3%%%受益匪浅!-----&# ... [详细]
  • 本文详细介绍了中央电视台电影频道的节目预告,并通过专业工具分析了其加载方式,确保用户能够获取最准确的电视节目信息。 ... [详细]
  • 使用GDI的一些AIP函数我们可以轻易的绘制出简 ... [详细]
  • 本文详细探讨了C语言中指针的概念,特别是指针在变量和数组中的应用。通过实例讲解,帮助读者更好地掌握指针的使用方法。 ... [详细]
  • 在Java中,this是一个引用当前对象的关键字。如何通过this获取并显示其所指向的对象的属性和方法?本文详细解释了this的用法及其背后的原理。 ... [详细]
  • 本文介绍了一种基于选择排序思想的高效排序方法——堆排序。通过使用堆数据结构,堆排序能够在每次查找最大元素时显著提高效率。文章详细描述了堆排序的工作原理,并提供了完整的C语言代码实现。 ... [详细]
  • 本文介绍了iOS应用开发的主要框架,包括Foundation、UIKit、CoreData及CoreGraphics等,并探讨了开发iOS应用所需的硬件和软件环境,以及推荐的编程语言。 ... [详细]
  • 本文详细介绍了Objective-C中的面向对象编程概念,重点探讨了类的定义、方法的实现、对象的创建与销毁等内容,旨在帮助开发者更好地理解和应用Objective-C的面向对象特性。 ... [详细]
  • 解析SQL查询结果的排序问题及其解决方案
    本文探讨了为什么某些SQL查询返回的数据集未能按预期顺序排列,并提供了详细的解决方案,帮助开发者理解并解决这一常见问题。 ... [详细]
  • 本文档汇总了Python编程的基础与高级面试题目,涵盖语言特性、数据结构、算法以及Web开发等多个方面,旨在帮助开发者全面掌握Python核心知识。 ... [详细]
author-avatar
gaoyizhen92
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有