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