block传值
来源:互联网 发布:哈密顿圈算法 编辑:程序博客网 时间:2024/06/01 18:18
1.block传值回来
//block 第一步,id为返回类型,无则为void@property (nonatomic ,copy)id(^titleblock)();//block 第二步,在哪里调用blockif (_titleblock) { titleLabel.text = _titleblock();}//block 第三步,调用具体方法CellViewController *cellCtrl = [[CellViewController alloc]init]; NSInteger i = indexPath.row; NSDictionary *dict = dataManager.taskArray[i];cellCtrl.titleblock = ^id(){ return [dict objectForKey:@"title"];};
2.block传值过去
//block 第一步,NSString *str为参数@property (nonatomic ,copy)void(^block)(NSString *str);//block 第二步,在哪里调用blockif (_block) { _block(symbol.data);}//block 第三步,调用具体方法CellViewController *cellCtrl = [[CellViewController alloc]init]; NSInteger i = indexPath.row; NSDictionary *dict = dataManager.taskArray[i];cellCtrl.titleblock = ^id(){ return [dict objectForKey:@"title"];};
注意⚠️!!!
1.想要block判空时不为NULL,block必须先调用,即在第三步时,block的实现方法要先于跳转页面(跳转到block所在的页面)的方法运行,才能保证block是在同一个ViewController内的值
2.block中要用到self时需要注意
Apple 官方的建议是,传进 Block 之前,把 ‘self’ 转换成 weak automatic 的变量,这样在 Block 中就不会出现对 self 的强引用。如果在 Block 执行完成之前,self 被释放了,weakSelf 也会变为 nil
如下:
__weak typeof(self) weakSelf = self; scanner.block = ^(NSString *str){ DIDStr = str; [weakSelf.LocalSDKWebView reload]; };
也可以把方法引到外面写,如下:
__weak typeof(self) weakSelf = self; scanner.block = ^(NSString *str){ __strong __typeof(self) strongSelf = weakSelf; [strongSelf did:str]; [strongSelf did1]; };
- (void)did:(NSString *)str { }- (void)did1 { }
在 did:str 中,weakSelf 不会变成 nil,不过在 did:str 执行完成,调用第二个方法 did1 的时候,weakSelf 有可能被释放,于是,strongSelf 就派上用场了:
__strong 确保在 Block 内,strongSelf 不会被释放。
0 0
- Block传值
- block传值
- Block 传值
- Block传值
- block传值
- block传值
- block传值
- Block传值
- Block 传值
- Block传值
- block传值
- block传值
- Block传值
- Block 传值
- Block 传值
- Block传值
- Block传值
- Block 传值
- Linux兴趣小组暑假留校第二次讲座总结
- 解决关于图片大小不一导致Cell的imageView无法显示为圆形
- Python初级简易爬虫
- Android 调用摄像头拍照并裁剪
- 汉字统计 hd 2030
- block传值
- 网页js加密码
- 【HDU】1171 - Big Event in HDU(母函数)
- HDOJ 1267 下沙的沙子有几粒?
- 【Codeforces】-612B-HDD is Outdated Technology(思维)
- 二分查找——Find Peak Element
- mHook MinHook API Library Detour EasyHook
- openwrt之ubus命令行工具
- 【代码笔记】iOS-中国地图