黑马程序员技术交流社区
标题:
iOS三期~今天学了block类型[笔记]
[打印本页]
作者:
SUPERREN_Hao
时间:
2016-1-11 13:36
标题:
iOS三期~今天学了block类型[笔记]
有点难理解啊~~~~~~~~~
函数:
void test(){
*********代码
}
函数分类:
函数 代码块类型
无参无返 无参无返回值
有参无返 有参无返回值
有参有返 有参有返回值
无参有返 无参有返回值
block类型是一个c级别的语法和运行机制。它与标准的c函数类似,不同之处在于,它除了有可执行代码以外,它还
包含类与堆,栈内存绑定的变量。因此,Block对象包涵着一组状态数据,这些数据在程序执行时用于堆行为产生影响
你可以用Block来写一些可以传到API中的函数语句,可选择型存储,并可以使用多线程,作为一个回调。Block特别的
有用,因为block既包含类回调期间的代码,又饱含了执行期间需要的数据
block兼容,OC C++,与c语言
block 它设置的变量可以用来存储一块代码段。
例如:
void test(){ test()后的代码块存储在block后的。
int a=3; 就是在block 定义的变量的内容就是在{}的内容 block a = {};
int b=4; --------->
int sum =a+b;
}
Blocl 的基本用法。
用^(脱字符)在操作赋来什么一个Block变量,并且给Block句的开始,Block的主体部分饱含在{}内,
^符号将myBlock 整体就是给myBlock赋值的代码
声明为一个块对象 代码块的形式参数
int (^myBlock)(int) = ^(int num){return num * multiplier;};
代码块返 表示有一个参数 块对象的主体部分
回值类型 且,参数类型是
int类型
*/
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// 1,无参无返回值的代码块的使用
// 格式:void (^block 变量名)(参数);
// 使用block的步骤
// 1)定义block类型的变量
// 2)给变量赋值代码
// 格式:block变量名=^(){};注意此处分号必须有!
// 3)使用block变量(执行这个代码),格式:block变量名();
void (^test)();//定义了一个block变量,无参无返;
test = ^(){
NSLog(@"我是block test!");
};
// 给test重新赋值
// 如果没有参数,小括号可以省略
test=^{
int m=18;
int s=m+18;
NSLog(@"xxxxxx %d",s);
};
// 执行代码块
test();
// 定义block变量,变量名为test2
// 2,有参数没有返回值的block的使用
// 格式:void (^block变量名)(参数列表) = ^(形式参数列表){};
// void test2(int a ,int b){b
// NSLog(@"a+b = %d",a+b);
// }
void (^test2)(int a,int b) = ^(int a,int b){
NSLog(@"a+b = %d",a+b);
};
// 使用
test2(3,6);
// 3,有参数/有返回值的block的使用;
// 格式:返回值类型(^block变量名)(参数类型) = ^(行参列表){代码块主体};
// int max(int x,int y){
//
// return x>y?x:y;
// }
// 定义了一个有返回值,有两个整形参数的block类型的变量,名成为max;
int (^max)(int x,int y) = ^(int x,int y){
return x>y?x:y;
};
int m = max(12,34);
NSLog(@"m = %d",m);
}
return 0;
}
感谢发达哥~
作者:
木叶
时间:
2016-1-11 20:18
顶一下先!!
作者:
zhuyapeng
时间:
2016-1-12 21:14
顶一下顶一下
作者:
364827317
时间:
2016-1-13 03:47
顶顶顶顶
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2