一 定义

Block封装了一段代码,可以在任何时候执行。

Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。

二 使用

1. 定义函数指针,然后在实现。

 #import <Foundation/Foundation.h>

 int (^max)(int,int);

 int main(int argc, const char * argv[]) {

     max = ^(int a,int b){

         return a >b ? a:b;
}; int maxVal = max(, );
NSLog(@"maxVal=%d" , maxVal ); return ;
}

在第3行定义函数指针,在第7行实现函数指针,在12行调用函数指针。

2. 在定义函数指针的同时,并实现。

#import <Foundation/Foundation.h>

int (^max)(int,int) = ^(int a, int b){
return a > b ? a : b;
}; int main(int argc, const char * argv[]) {
int maxVal = max(, );
NSLog(@"maxVal=%d" , maxVal ); return ;
}

3.用typedef先声明类型,再定义变量进行赋值

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
typedef int (^max)(int,int);
max getMax = ^(int a, int b){
return a > b ? a:b;
}; int maxVal = getMax(, );
NSLog(@"maxVal=%d" , maxVal ); return ;
}

Block可以访问局部变量,但是不能修改。

  int sum = ;
int (^myBlock)(int) = ^(int x){
int result = sum++;
return x * x;
};

如果要修改就要在第一行加关键字:__block

__block int sum = ;
int (^myBlock)(int) = ^(int x){
int result = sum++;
return x * x;
};

资料参考:

http://www.cnblogs.com/ljcgood66/p/4970628.html

http://www.cnblogs.com/e8net/p/3750825.html

http://www.cnblogs.com/goodboy-heyang/p/5240004.html

最新文章

  1. Windows 使用 Yeoman generators 创建 ASP.NET 应用程序
  2. PHP 字符串左边补0,字符串右边补0
  3. TortoiseGit 连接Git服务器不用每次输入用户名和密码的方法
  4. 【BZOJ-1367】sequence 可并堆+中位数
  5. UVa 839 天平
  6. c语言-格式控制字符 %XXd 用法
  7. iOS 中SQLite数据库操作
  8. 基于visual Studio2013解决面试题之0801对称字符串
  9. MVC数组模型绑定
  10. Driver 初始化顺序
  11. Javascript继承,再谈
  12. 「luogu3258」[JLOI2014] 松鼠的新家
  13. python3类方法与静态方法
  14. 迁移32位下的旧代码到64位sever遇到过的两个很诡异的问题
  15. Spring NoSuchBeanDefinitionException原因分析
  16. VMware安装win7提示 operating system not found
  17. 2019.01.19 codeforces896C.Willem, Chtholly and Seniorious(ODT)
  18. TC-572-D1L2 (双向搜索+记忆化)
  19. 【数学】【P5150】 生日礼物
  20. java 内部类可以被覆盖吗

热门文章

  1. 事故记录-过多进程致使CPU卡死
  2. Spring 集成 RMI
  3. Linux内核
  4. Linux Linux程序练习十一(网络编程大文件发送UDP版)
  5. python中的模块
  6. Sublime Text 之 Package Control 镜像
  7. python3 入门 (一) 基础语法
  8. MFC实现Gif动画制作工具
  9. scikit-learn——快速入门
  10. 笔记:js的replace函数