黑马程序员-oc-Block
2015-08-22 01:25
495 查看
------- android培训、java培训、期待与您交流!
----------
1,block代码块
Block对象是一个c级别的语法和运行机制。它与标准的c函数类似,不同之处在于,它除了有可执行的代码外,还包含了与堆,栈内存绑定的变量。
Block 是一个基本数据类型,用于存放代码段
c与oc基本类型区别:SEL,id,Block,boolean,BOOL
^操作符:用于声明一个block变量,
int (^myBlock)(int) = ^(int num){ return code;};
2,typedef
1,函数指针:int(*p)(int x,int y);
#include <stdio.h>
int sum(int x,int y){return x+y;}
int jian(int x,int y){return x-y;}
int main(int argc, const char * argv[]) {
// insert code here...
int (*p)(int x,int y);
p=sum;
int a = p(2,3);
printf("%d",a);
return 0;
}
用typedef修饰block
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
void(^myBlock)()=^(){
NSLog(@"HELLO BLOCK");
};
myBlock();
//myBlock2(1,2);
void (^myblock2)(int ,int)= ^(int a,int b){
NSLog(@"%d",a+b);
};
myblock2(2,3);
myblock2=^(int x,int y){
NSLog(@"%d",x>y?x:y);
};
myblock2(12,6);
int (^myblock3)(int ,int)=^(int a,int b){
return a+b;
};
int ret = myblock3(12,33);
NSLog(@"RET=%d",ret);
typedef void(^newType)(int ,int);
newType a;
a=^(int x,int y){
NSLog(@"X+Y=%d",x+y);
};
a(2,3);
}
return 0;
}
block访问外部变量
1,block可以访问外部的变量
2,block不可以修改外部的变量
3,block同名变量,局部屏蔽外部变量作用域
4,给要访问的变量加上__block关键字,即可修改
block应用场景
block使用技巧
------- android培训、java培训、期待与您交流!
----------
----------
1,block代码块
Block对象是一个c级别的语法和运行机制。它与标准的c函数类似,不同之处在于,它除了有可执行的代码外,还包含了与堆,栈内存绑定的变量。
Block 是一个基本数据类型,用于存放代码段
c与oc基本类型区别:SEL,id,Block,boolean,BOOL
^操作符:用于声明一个block变量,
int (^myBlock)(int) = ^(int num){ return code;};
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { void(^myBlock)()=^(){ NSLog(@"HELLO BLOCK"); }; myBlock(); } return 0; }
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { void(^myBlock)()=^(){ NSLog(@"HELLO BLOCK"); }; myBlock(); //myBlock2(1,2); void (^myblock2)(int ,int)= ^(int a,int b){ NSLog(@"%d",a+b); }; myblock2(2,3); myblock2=^(int x,int y){ NSLog(@"%d",x>y?x:y); }; myblock2(12,6); int (^myblock3)(int ,int)=^(int a,int b){ return a+b; }; int ret = myblock3(12,33); NSLog(@"RET=%d",ret); } return 0; }
2,typedef
1,函数指针:int(*p)(int x,int y);
#include <stdio.h>
int sum(int x,int y){return x+y;}
int jian(int x,int y){return x-y;}
int main(int argc, const char * argv[]) {
// insert code here...
int (*p)(int x,int y);
p=sum;
int a = p(2,3);
printf("%d",a);
return 0;
}
用typedef修饰block
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
void(^myBlock)()=^(){
NSLog(@"HELLO BLOCK");
};
myBlock();
//myBlock2(1,2);
void (^myblock2)(int ,int)= ^(int a,int b){
NSLog(@"%d",a+b);
};
myblock2(2,3);
myblock2=^(int x,int y){
NSLog(@"%d",x>y?x:y);
};
myblock2(12,6);
int (^myblock3)(int ,int)=^(int a,int b){
return a+b;
};
int ret = myblock3(12,33);
NSLog(@"RET=%d",ret);
typedef void(^newType)(int ,int);
newType a;
a=^(int x,int y){
NSLog(@"X+Y=%d",x+y);
};
a(2,3);
}
return 0;
}
block访问外部变量
1,block可以访问外部的变量
2,block不可以修改外部的变量
3,block同名变量,局部屏蔽外部变量作用域
4,给要访问的变量加上__block关键字,即可修改
block应用场景
block使用技巧
------- android培训、java培训、期待与您交流!
----------
相关文章推荐
- 每天五个java相关面试题(7)--线程篇
- 线程调度实现面试题:输出ABCDABCD.....
- 面试题:冒泡排序,选择排序,插入排序,快速排序,归并排序,堆排序
- 程序员应有的态度
- 5种类型的程序员
- 程序员的出路在哪里?
- 单链表环问题
- 黑马程序员-JAVA基础之常见API
- 黑马程序员-OC-Foundation框架总结一
- iOS程序员面试要注意的几个问题
- 黑马程序员-JAVA基础之多线程
- 黑马程序员-oc-分类(Q)
- 黑马程序员——OC的内存管理——ARC
- 网易2015面试编程题
- 黑马程序员--Java基础学习(面向对象)第九天
- 黑马程序员----java基础之异常和File文件类
- 黑马程序员--Java基础学习(面向对象)第八天
- iOS 面试问题的解答
- 黑马程序员--Java基础学习(面向对象)第七天
- 黑马程序员--Java基础学习(面向对象)第五天