`
lizhuang
  • 浏览: 904519 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Blocks表达式语法

 
阅读更多
简要介绍Block Literal Syntax,Block的出现是为了解决Objective C中的匿名函数问题。使用匿名函数可以使程序更为简洁,容易理解,减少程序员的函数命名工作。

1.Block语法

^ 返回值类型 参数列表 表达式
^int (int count){return count + 1;}



^ 参数列表 表达式
^(int count){ return count+ 1;}

返回值类型还是为int

^ 表达式
^void (void) { printf("Blocks\n";}

因为无返回值类型和参数列表所以可以省略为
^{printf("Blocks\n";}


2.Block类型变量

typedef int (^blk_t)(int);


typedef int(^SumBlockT)(int a,int b)


typedef void(^blockname)(NSDictionary* dict, NSError* error)


3.Block内赋值,__Block

__weak __typeof(self)weakSelf = self;
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            [weakSelf.delegate preOperateInBackgroundAtPageIndex:[self switchToPageIndexForIndex:index] ofBroadcastView:weakSelf];
        });

分享到:
评论

相关推荐

    iphone blocks

    - **定义**:Blocks是一种匿名函数,类似于其他语言中的Lambda表达式或闭包。它们可以在程序的任何地方定义,并能够捕获其定义时的上下文变量。这种能力使得Blocks非常适用于异步编程、延迟执行和事件驱动的场合。 -...

    Blocks apple

    2. **Function Expressions with Data**: Blocks被用于组成可以传递给API的函数表达式,可以选择存储,并由多个线程使用。它们在作为回调时特别有用,因为block携带着在回调时要执行的代码以及执行过程中所需的数据...

    Blocks基础教程

    虽然C++不直接支持Blocks,但是可以通过特定的方式(如使用C++ lambda表达式)来实现类似的功能。 ```c++ #include std::function(std::string)> myBlock = [](std::string str) -> std::string { return "Hello, ...

    blocks编程要点

    它们类似于其他语言中的lambda表达式或闭包,并且在Cocoa框架中得到了广泛的应用。 ### 1.1 调用一个简单的Block 一个基本的Block通常用于执行一个简单的任务,例如计算两个数的乘积。下面是一个例子: ```c int ...

    Blocks编程要点 pdf

    Block对象可以用于编写函数表达式,这些表达式可以作为API使用,也可以选择性地存储,甚至被多个线程共享。Block对象特别适合用作回调函数,因为它们携带着进行回调所需的执行代码和数据。 #### 文档结构 - **...

    Swift语言采用Closure闭包实现反向传值Demo

    3. **闭包表达式**:Swift提供了简洁的闭包表达式语法,使其更易于编写和阅读,而Blocks的语法较为冗长。 通过这个Demo,开发者可以更好地理解和掌握Swift中的闭包及其在实际项目中的应用,特别是在视图控制器间的...

    JDK15-java-se-language-updates.pdf

    1. Switch 表达式: JDK 15 中引入了 Switch 表达式,这是一种新的表达式语法,允许开发者使用 Switch 语句来执行不同类型的操作。 2. Text Blocks: JDK 15 中引入了 Text Blocks,允许开发者使用多行字符串 literals...

    gulp-remove-debug-blocks-源码.rar

    例如,可以先使用`gulp-sass`编译SCSS文件,然后用`gulp-babel`转换ES6语法,接着用`gulp-remove-debug-blocks`移除调试语句,最后使用`gulp-uglify`压缩代码。这样,从源代码到生产代码的整个过程就实现了自动化。 ...

    Code Blocks中文实例教程

    - **代码高亮**: 支持多种编程语言的语法高亮显示,提高代码可读性。 - **智能提示**: 提供代码补全功能,加快编程速度。 **2.3 编译器和调试器** - **编译器**: 默认使用MinGW作为编译器,支持GCC系列的编译器。 ...

    C语言半自动词法分析器和半自动语法分析器.zip

    - 代码编辑器或IDE,如Visual Studio、Code::Blocks或Eclipse。 ### 适合人员: - 计算机科学或相关领域的学生:此项目能够帮助他们实践编译原理和C编程知识。 - 软件开发者:特别是那些对编译器和解释器如何工作感...

    Building Blocks

    本文将基于“Building Blocks”这一主题,结合“基础Java教学课程课件”的描述,详细阐述Java编程的基础知识,包括高级与低级语言的区别、Java语言特性、程序结构、文字量(Literals)、表达式(Expressions)、算术...

    oracle 存储过程的基本语法

    Oracle 存储过程是数据库管理中的重要组成...在实际应用中,还可以结合使用异常处理(EXCEPTION),游标处理(OPEN, FETCH, CLOSE),以及PL/SQL的其他控制结构,如CASE表达式,nested blocks等,以实现更高级的功能。

    一个java正则表达式工具类源代码.zip(内含Regexp.java文件)

    * Classes for Unicode blocks and categories Unicode 字符类 * \p{InGreek} A character in the Greek block (simple block) \p{InGreek} 希腊语种的字符 (simple block) * \p{Lu} An ...

    Swift语言利用Closure闭包实现反向传值Demo

    闭包有三个关键特性:捕获值、自动强引用循环检测(也称为弱引用和无主引用)以及闭包表达式语法。当闭包捕获并引用了外部环境的变量时,这些变量的生命周期将与闭包绑定。Swift为防止内存泄漏,提供了强引用循环...

    构造LR(1)分析程序,利用它进行语法分析,判断给出的符号串是否为该文法识别的句子

    - **开发工具**:可以是任何支持C语言的集成开发环境(IDE),例如Visual Studio Code、Code::Blocks等。 - **实验代码**:实验代码包含了基本的数据结构定义和必要的函数实现。 #### 五、核心数据结构 为了实现LR...

    nginx-1.4.2-openssl-1.0.1c-pcre-8.37-zlib-1.2.8.rar

    PCRE 8.37是用于处理正则表达式的库,它与Perl语言的正则表达式语法兼容。在Nginx中,PCRE用于解析和匹配URL,从而决定如何路由请求。比如,通过正则表达式,可以实现路径重写、动态内容生成等功能,提升网站的灵活...

    LANGUAGES GUIDE _ WGL.pdf

    “方程式特定程序块”(Equation-Specific Program Blocks)部分将说明如何为WGL文件中的测试向量定义变量、常数、表达式以及操作符和增量器。这些元素使得WGL文件能够描述复杂的测试逻辑和条件。 在“特定于测试器...

    编译原理课程设计:算符优先分析 C++

    在编译原理中,算符优先分析是一种自底向上的语法分析方法,它主要用于解析程序中的表达式。本文将深入探讨这一主题,并结合C++语言进行课程设计。 ### 1. 课程设计目的和要求 1.1 **课程设计的目的** 算符优先...

    C语言学习指南语法教程

    - **Code::Blocks**:一个轻量级且功能丰富的IDE,支持跨平台使用。 - **Eclipse CDT**:基于Eclipse平台的C/C++开发工具,适合于那些习惯使用Eclipse环境的开发者。 选择合适的开发环境可以极大地提高编程效率。 ...

Global site tag (gtag.js) - Google Analytics