关于block的简单介绍
什么是block?
Block是C语言的一个语法特性,同时也是C语言的运行时特性,它很像C中的函数指针,因为你可以像使用函数指针一样的去使用block对象;它也很像C++中的函数对象,因为除了要执行的代码,block还可以携带和block绑定的状态信息。
代码块的结构
代码块的简单赋值与调用
// 将block块赋值给一个变量testblock,然后直接通过变量来调用代码块中的代码 int(^testblock)(int a, int b) = ^(int a, int b){ return a + a + b * a; }; NSLog(@"\n------testblock代码块执行方法为:%d", testblock(3,6));
代码块的直接嵌入
// 在很多情况下,我们并不需要将block宣告成变量,我们可以直接在需要使用block的地方用内嵌的方式将block的内容写出来. // 注意:在直接写代码块的时候,这个代码块是否有返回值,返回值的类型都是在一开始定义的函数中写好了的。 /*[[TTIHttpClient shareInstance] getTopNewsRequestwithpage:(int) withpagesize:(int) withSucessBlock:^(TTIRequest *request *request, TTIRequest * response) successBlock withFailedBlock:^(TTIRequest *request *request, TTIRequest * response) failedBlock [[TTIHttpClient shareInstance] getTopNewsRequestwithpage:1 withpagesize:PAGESIZE withSucessBlock:^(TTIRequest *request, TTIResponse *response) { NSArray *results = [response.result objectForKey:@"result"]; //存进缓存文件中 [ICDataStorage saveArray:results forKey:HEADNEWSLISTCACHE]; } withFailedBlock:^(TTIRequest *request, TTIResponse *response) { }]; */
__block的使用
在block内只能读取在同一个作用域的变数而且没有办法修改在block外定义的任何变数,此时若我们想要这些变数能够在block中被修改,就必须在前面挂上__block的修饰词
int number1 = 1; __block int number2 = 2; void(^block__test)() = ^(){ number1++;//这句话不可以执行,因为没有 __block 前缀 number2++; }; block__test();//调用代码块 NSLog(@"%d", number1); NSLog(@"%d", number2);
以上就是block的简单使用方法的介绍
时间: 2024-11-08 19:11:22