我有视图控制器1让我们说 VC1 ,我正在推动另一个视图控制器,让我们说 VC2 。
在 VC1 中,我将类型定义为我的块,如下所示
#define typedef void(^Myblock)();
在 VC2 中,我已将块声明为属性,如下所示
@property(nonatomic, weak) MyBlock myBlock;
在推送 VC2 之前,我正在分配块文字,如下所示
-(void)pushVC2 { __weak VC1 *weakSelf = self; VC2 *vc2 = [self.storyboard instantiateViewControllerWithIdentifier:@"VC2"]; [vc2 setMyBlock:^{ NSLog(@"Block executed"); }]; }
答案 0 :(得分:1)
希望这会清除你的概念: -
注意:您应该将copy指定为属性属性,因为需要复制块以跟踪其在原始范围之外的捕获状态。在使用自动引用计数时,您不必担心这一点,因为它会自动发生,但属性属性的最佳做法是显示结果行为。有关更多信息,请参阅块编程主题。