iOS block 总结
2015-04-23 00:07
162 查看
^是Block的特有标记
Block的实现代码包含在{}之间
大多情况下,以内联inline函数的方式被定义和使用
系统中有自带的inlineblock, Xcode里直接敲就会出现block
例如:
格式说明:
(返回类型)(^块名称)(参数类型) = ^(参数列表) {代码实现};
如果没有参数,等号后面参数列表的()可以省略
在定义Block时,会在Block中建立当前局部变量内容的副本(拷贝)
后续再对该变量的数值进行修改,不会影响Block中的数值
如果需要在block中保持局部变量的数值变化,需要使用__block关键字
使用__block关键字后,同样可以在Block中修改该变量的数值
在被当做参数传递时,Block同样可以使用在定义之前声明的局部变量
默认情况下,Block外部的变量,在Block中是只读的!
如果要修改Block之外的局部变量,需要使用__block关键字
使用时,避免block对指针做强引用,从而引起内存不能释放问题。
可以使用typedef定义一个Block的类型,便于在后续直接使用。
Block是一种数据类型,那么可以将Block当做比较特殊的对象。
局部变量默认都是强引用的,离开其所在的作用域之后就会被释放
使用__weak关键字,可以将局部变量声明为弱引用
block 定义属性值,使用copy
@property (nonatomic, copy) BLOCKHANDLE finishBlock;
Block的实现代码包含在{}之间
大多情况下,以内联inline函数的方式被定义和使用
系统中有自带的inlineblock, Xcode里直接敲就会出现block
例如:
void(^demoBlock)() = ^ { NSLog(@"demo Block"); }; int(^sumBlock)(int, int) = ^(int x, int y) { return x + y; };
格式说明:
(返回类型)(^块名称)(参数类型) = ^(参数列表) {代码实现};
如果没有参数,等号后面参数列表的()可以省略
在定义Block时,会在Block中建立当前局部变量内容的副本(拷贝)
后续再对该变量的数值进行修改,不会影响Block中的数值
如果需要在block中保持局部变量的数值变化,需要使用__block关键字
使用__block关键字后,同样可以在Block中修改该变量的数值
在被当做参数传递时,Block同样可以使用在定义之前声明的局部变量
默认情况下,Block外部的变量,在Block中是只读的!
如果要修改Block之外的局部变量,需要使用__block关键字
使用时,避免block对指针做强引用,从而引起内存不能释放问题。
可以使用typedef定义一个Block的类型,便于在后续直接使用。
Block是一种数据类型,那么可以将Block当做比较特殊的对象。
局部变量默认都是强引用的,离开其所在的作用域之后就会被释放
使用__weak关键字,可以将局部变量声明为弱引用
block 定义属性值,使用copy
@property (nonatomic, copy) BLOCKHANDLE finishBlock;
- (void)demoBlockOp { // 不能用__weak // __weak DemoObj *weakSelf = self; // 只有self直接强引用block,才会出现循环引用 // block的管理以及线程的创建和销毁是由队列负责的,直接在block中使用self没有关系! for (int i = 0; i < 10; ++i) { [self.queue addOperationWithBlock:^{ //不能使用__weak // [weakSelf demoOp:@(i)]; [self demoOp:@(i)]; }]; } }
相关文章推荐
- iOS 工作之余小总结之(六)(4) --四种界面反向传值的方式:block反向传值
- iOS Block在ARC/非ARC下的使用总结
- IOS_Block—总结
- iOS 关于页面回调传值的总结(delegete、block)
- iOS面试题总结---block
- iosiOS学习总结----block的简单使用
- ios中block的学习总结
- iOS-Block总结 && 全面解析逆向传值
- IOS开发之我对block的认识总结
- Block编程总结【iOS】
- iOS block使用总结
- iOS-Block的总结
- 2017iOS面试经典总结(1)--- iOS 代理,通知,Block
- iOS页面间传值的五种方式总结(Delegate/NSNotification/Block/NSUserDefault/单例)
- iOS开发总结之block回调以AFN为基础封装的网络请求操作类
- iOS 工作之余小总结 -- (五)(1) 最简单的Block教程 及Block与全局(局部)变量
- 【IOS 开发学习总结-OC-7.6-★】objective-c ——块(Block)
- iOS block 基本用法总结
- iOS总结 - Block
- iOS开发关于block学习的总结