iOS——block的基础使用
来源:互联网 发布:淘宝悠悠球哪个好 编辑:程序博客网 时间:2024/06/10 02:26
* block* 是块语法,实质上是匿名函数,是对C语言中函数的扩充* 可以用来保存一段代码,或者用来调用一段封装好的代码* 语法由于是由C语言实现的,所以执行效率特别高
数据类型
返回值类型 (^)(参数类型1 参数名2 ,参数类型2 参数名2 ··· ···);
注意:1. 如果要定义的block没有参数,括号也不能省略
2. 参数名可以省略,但是参数类型必须保留
// 定义block变量的格式 : 返回值类型 (^block变量名)(参数类型1,参数类型2··· ···)
无返无参的block
void (^blockName)();无返有参的block
void (^blockName1)(参数类型1 int,参数类型2 int);有返无参的block
返回值类型int (^blockName2)();有返有参的block
返回值类型int (^blockName3)(参数类型1int,参数类型2int);
// 给block变量赋值 (block的实现)
格式: ^(参数类型1 参数名,参数类型2 参数名··· ···){
执行代码;
}
注意:1.参数名不能省略
2. 如果有返回值需要用到return返回数据
3. 大括号后需要跟分号 ;
// block的调用
格式:block变量名(实参1,实参2 ··· ···);
block赋值的时候,block块中的代码不执行,只有当block调用的时候,block块中的代码才执行
实现无返有参的block
blockName1 = ^(int a,int b){
NSLog(@“%@“,a>b?a:b);
};
// 调用:
blockName(10,20);实现有返无参的block
blockName2 = ^(){
return需要返回的变量名;
};
int result = blockName2();
NSLog(@“%@“,result);实现有返有参的block
blockName3 = ^(int a,int b){
return a*b;
};
result1 = blockName3(10,4);
NSLog(@“%d“,result1);
// 定义的同时为block进行变量赋值
void (^printBlock)() = ^(){
NSLog(@“…..”)
};
printBlock();
//————————————————————————————//
// 练习1:写一个有返回值的整型,参数为NSString类型,实现字符串数字转换为整型数据
int (^changeBlock)(NSString ) = (^NSString intString){
return [intString intValue];
};
int m = changeBlock(@“1111”);
NSLog(@“%d”,m);
//————————————————————————————//
给block起别名
typedef int (^FUN) (int, int);
其别名的格式: typedef 返回值类型(^新类型名)(参数类型列表)
typedef int (^block)(int,int);
block b = ^(int a,int b){
return a%b;
};
// 使用block时需要注意的问题 :
1. block块中可以直接访问局部变量,但是不能修改
int c = 15;
block b1 = ^(){
c++; // error!!
NSLog(@“%@“,c);
};
b1();
2. block 块中可以直接访问全局变量,也可以修改全局变量
3. 如果在块中非要修改局部变量,此时再定义局部变量的时候,在变量类型前面加上__block
__block int a = 3;
block b2 = ^(){
a++; // 此时是可以改变的
NSLog(@“%d”,a);
};
b2();
- iOS——block的基础使用
- iOS block的使用
- ios block 的使用
- iOS Block的使用
- iOS~block的使用
- iOS Block的使用
- iOS block的使用
- iOS~block的使用
- iOS~block的使用
- iOS Block的使用
- iOS Block的使用
- iOS Block 的使用
- iOS-Block的使用
- iOS开发 - Block块的使用(一)基础概念
- iOS中Block的基础
- IOS系列——Block的基本使用
- iOS 代码块(block)使用基础
- iOS开发 ——Block使用
- llq考试 圣诞欢乐赛 (第二发)
- VS2010中使用sprintf出现warning C4996: 'sprintf': This function or variable may be unsafe.
- UITextView return键隐藏键盘
- OC基础----数组排序(OC)
- 凸包入门之卷包裹法 & hdu 1348 wall
- iOS——block的基础使用
- Python---function call
- 远离国产!windows最佳浏览器-谷歌chrome
- pyparsing 使用
- 四大组件之Activity(活动)
- Python---httplib2
- WEKA——数据挖掘与机器学习工具
- 怎样学习大数据
- iOS——TabbarViewConttoller