iOS--storyBoard使用Block传值

1. 在方法里面定义的Block是存储在栈区的,方法调用完毕之后Block占用的内存就会被销毁.如果需要在其他方法里面使用该Block需要把Block定义成属性,修饰成copy,这样     就会把栈区的内容拷贝一份到堆区.

2. 解决Block的内存循环引用问题.

当一个对象对Block持有所有权.在Block又使用该对象的内容(self或者该对象的实例变量),会导致Block的内存循环引用 解决方案,在ARC中用__weak修饰该指针, 在MRC中用__Block修饰该指针.

 

 

 

 

 

//点击cell跳转时触发
// In a storyboard-based application, you will often want to do a little preparation before navigation

在使用storyBoard时进行传值是的操作.

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    //得到目的视图
    DetailViewController * detailVC = [segue destinationViewController];
    //得到点击的cell
    ContactTableViewCell * cell = sender;
    //得到索引值
    NSIndexPath * indexPath = [self.tableView indexPathForCell:cell];
    //传值.
    detailVC.string = [self.MArray objectAtIndex:indexPath.row];
    __weak ContactTableViewCell *cellTwo = cell;
    __weak DetailViewController *detailTwoVC = detailVC;
    [detailTwoVC showTFStringBlock:^(NSString *str) {
        //给cell赋值.
        cellTwo.aLabel.text = str;
        //在MRC下用__BLock解决循环引用问题防止引用计数加1, 在ARC环境下用__weak解决循环引用问题,防止cell,detailVC所持有的对象引用计数加一.
        detailTwoVC.view.backgroundColor = [UIColor redColor];
    }];
}

转载于:https://www.cnblogs.com/jfhn/p/4442939.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值