Block研究
来源:互联网 发布:淘宝上的海藻胶面膜贴 编辑:程序博客网 时间:2024/06/06 01:41
Block的定义
block声明的方式:返回值(^block变量名)(参数)
block传值
与代理传值一样,用block传值,其实就是用block代替代理的逻辑去传值。
举例:从ViewController跳转到SecondViewController,然后需要从SecondViewController向ViewController传值,逻辑代码如下:
首先在SecondViewController声明一个block
@property (nonatomic, strong) void(^block)(NSString *value);
然后实现block的传值逻辑
if (_block) {
_block(@"123");
}再回到ViewController实现block的调用,这就是用block传值的简单逻辑
SecondViewController *second = [[SecondViewController alloc] init];second.block = ^(NSString *value) { NSLog(@"%@",value);};[self presentViewController:second animated:YES completion:nil]
block的循环引用
block造成循环引用的原因:block会对里面所有的变量都强引用一次。看下面代码:
_block = ^{ NSLog(@"%@",self);};
当在ViewController中定义一个block,并且在block中实现这句代码的时候,这个控制器在返回的时候不会被销毁,原因是控制器持有了block,而block又持有了控制器,故造成了循环引用。解决办法是将self弱引用化。
__weak typeof(self) weakSelf = self;_block = ^{ NSLog(@"%@",weakSelf);};
0 0
- Block研究
- IOS Block研究
- Linux 磁盘“Block Size”研究
- Block的具体研究 二
- Block的深入研究之Block的内存管理
- 研究block中的数据调用情况
- ruby 的yield和block研究
- iOS中block深入原理研究
- Objective-C研究之Block的使用
- SEL(去除警告)、Block(block深入研究、block回调--匿名函数)
- User Interface Process(UIP) Application Block 2.0 研究总结
- Authorization and Profile Application Block 1.0研究总结
- Authorization and Profile Application Block 1.0研究总结
- User Interface Process(UIP) Application Block 2.0 研究总结
- User Interface Process(UIP) Application Block 2.0 研究总结
- Authorization and Profile Application Block 1.0研究总结
- User Interface Process(UIP) Application Block 2.0 研究总结
- Authorization and Profile Application Block 1.0研究总结
- Linux中常用操作命令
- InSAR-DInSAR 技术细节(七)轨道误差及其处理办法
- EtherCAT---帧格式详解
- 使用 Vagrant 打造跨平台开发环境
- Android下的数据存储之SharedPreference
- Block研究
- log4j日志文件保存设置 按时间或文件大小
- 差分约束系统详解
- Android TextView Span的使用详解
- 不借助第三个变量,两值互换的方法
- 【bzoj 4581】[Usaco2016 Open]Field Reduction(dfs)
- myCat schema.xml详解
- 图片上传预览
- 设计模式学习笔记(个人思考理解)