block野指针crash: Thread 1:EXC_BAD_ACCESS(code=1,address=0x10)

以前block调用用的也是同样的方法,但是这次就Crash了,无脑crash,一调用就crash,控制台还不打印任何crash信息,然后问度娘说是野指针问题,说实话,一行一行代码看的,找了几个小时,后来发现原来是导航控制器push的时候创建了新的实例,导致系统把老的实例释放掉了(蛋疼)。

先说下我要实现的功能:从根控制器跳到第一个控制器,然后在第一个控制器中调用block改变根个控制器的背景色并返回第一个控制器。

第一个控制器中的代码:

// 将要跳转的第二个控制器

@property (nonatomic, strong) BSOneController *oneVC;

- (void)viewDidLoad {

    [super viewDidLoad];

    BSOneController *oneVC = [[BSOneController alloc] init];

    self.oneVC = oneVC;

    oneVC.changeColor = ^(UIColor *color) {

        self.view.backgroundColor = color;

        [self.navigationController popViewControllerAnimated:YES];

    };

}

- (void)goOneVC:(UIButton *)btn{

    // 崩溃原因:就是在这里又创建了一个新的实例,导致上面self.oneVC被提前释放,然后又调用实例的block导致crash

//    BSOneController *one = [[BSOneController alloc] init];

//    [self.navigationController pushViewController:one animated:YES];

    

    [self.navigationController pushViewController:self.oneVC animated:YES];

}

 

转载于:https://my.oschina.net/yejiexiaobai/blog/1537346

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值