第十四篇:OC中block存储代码块的定义与应用
来源:互联网 发布:ubuntu上安装mysql5.7 编辑:程序博客网 时间:2024/06/04 18:15
1.如何定义block变量,形式:返回值类型 (^block变量名)(参数)
》形式一求和的block变量: int (^sumBlock)(int , int ) ;
》形式二:void (^voidBlock)() ;
2.如何利用block封装代码:
^(int a , int b) {
return a + b ;
} ; // 有一个分号“ ; ”
^(){
NSLog(@"--------------------");
} ;
^{ // 没有参数括号可以省略
NSLog(@"--------------------");
} ;3. block 访问外面变量规则:
》block 内部可以访问外面的变量。
》默认情况下,block 内部不能修改外面的局部变量;但可以修改全局变量。
》给局部变量加上 __block 关键字,那么这个局部变量就可以在block 内部修改。
4. 利用 typedef 定义block 类型:
》typedef int (^MyBlock)(int , int ) ;
// 以后就可以利用MyBlock这种类型来定义block变量。
MyBlock b1 ;
b1 = ^(int a , int b ){
return a - b ;
} ;
MyBlock b2 = ^(int a , int b) {
return a + b ;
} ;
5.例子:
#import <Foundation/Foundation.h>typedef int (^MyBlock)(int,int); // block类型int cc =9 ;int main(int argc, const char * argv[]) { int a = 20 ; __block int b = 100 ; void (^voidBlock)() = ^{ NSLog(@"------------"); //在bloc体内不能修改非__block声明的局部变量,可以修改全局变量和用__block声明的局部变量 //a = 10; b = 50 ; cc = 111; }; NSLog(@"%d %d %d",a,b,cc); voidBlock(); NSLog(@"%d %d %d",a,b,cc); int (^sumBloc)(int , int); sumBloc= ^(int a,int b){ return a+b; }; int (^subBloc)(int,int) = ^(int a,int b){ return a - b ; }; int sum = sumBloc(10,90); int sub = subBloc(10,90); NSLog(@"sum = %d sub = %d",sum,sub); voidBlock(); //------ typedef block类型用法------------ MyBlock sum1 = ^(int a,int b){ return a + b ; }; MyBlock sub1 ; sub1 = ^(int a ,int b){ return a - b ; }; NSLog(@"sum1 = %d sub1 = %d",sum1(10,20),sub1(20,10)); return 0;}
0 0
- 第十四篇:OC中block存储代码块的定义与应用
- OC学习 第十四章 Block代码块
- 黑马程序员------OC中代码块(block)的总结
- OC代码块block
- IOS中得block代码块的定义及使用
- IOS中得block代码块的定义及使用
- IOS中得block代码块的定义及使用
- iOS中得block代码块的定义及使用
- IOS中得block代码块的定义及使用
- OC中块Block的用法
- oc中block的定义和使用
- OC------block块的使用
- iOS中Block代码块的使用
- 黑马程序员——OC语言学习——ARC机制、block代码块、protocol协议、protocol协议的应用
- iOS之Block代码块的定义及使用
- OC教程6-代码块block回调
- 转载:OC中的代码块block
- OC中Block的基本的定义,实现,调用
- 黑马程序员-------C语言----指针做函数参数
- 修改编辑框禁用状态文字颜色的方法
- 动态规划:从新手到专家
- 自学QT之数字时钟
- 页面整体布局
- 第十四篇:OC中block存储代码块的定义与应用
- 表格
- 【软考2】Java语言的基本知识汇总
- leetcode Merge Sorted Array
- Android特效 五种Toast详解
- codeforces 126B B. Password(kmp+dp)
- HDU 5437.Alisha’s Party【2015 ACM/ICPC Asia Regional Changchun Online】【优先队列】9月14
- 虚拟机双网卡配置以及注意事项
- 使用FileReader类、BufferedReader类、FileInputStream类三种方式输出