block 高级

时间:2023-03-09 13:12:28
block 高级

//从后往前传值 声明block属性

//copy 目的是 将栈区的block拷贝一份到堆区

@property(nonatomic,copy)void (^sendValueBlock)(id);

//1,

LoginViewController *loginVC = [[LoginViewController alloc] init];

//2,给需要传值的block的值赋值 (实现)

//如果想要再block内部使用一个对象,并不想被block持有

//弱引用 。在内部使用需在外部创建一个同类型的对象

__block MineTableViewController *weakSelf = self;

loginVC.sendValueBlock = ^(id obj){

//将传递过来的值设置为title

//不能在block内写self,也不能写self的属性。非要使用要使用__block 修饰

weakSelf.title = obj;

};

NSLog(@"%lu",self.retainCount);

//

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

[loginVC release];

}