Ios NSBlock的访问限定符是复制、弱还是强?

Ios NSBlock的访问限定符是复制、弱还是强?,ios,objective-c-blocks,Ios,Objective C Blocks,我有视图控制器1,比如说VC1,我正在推另一个视图控制器,比如说VC2 在VC1中,我已将我的块定义为以下类型 #定义typedef void(^Myblock)() 在VC2中,我声明了一个块作为属性,如下所示 @属性(非原子,弱)MyBlock MyBlock 在按下VC2之前,我分配一个块文字,如下所示 我的问题是,如果我从VC2调用我的块,将不执行该块。如果我将属性声明为copy,则执行块。任何人对此都有解释 希望这将澄清您的概念:- 注意:您应该将copy指定为属性属性,因为需要

我有视图控制器1,比如说VC1,我正在推另一个视图控制器,比如说VC2

  • VC1中,我已将我的块定义为以下类型

    #定义typedef void(^Myblock)()

  • VC2中,我声明了一个块作为属性,如下所示

    @属性(非原子,弱)MyBlock MyBlock

  • 在按下VC2之前,我分配一个块文字,如下所示

  • 我的问题是,如果我从VC2调用我的块,将不执行该块。如果我将属性声明为copy,则执行块。任何人对此都有解释

  • 希望这将澄清您的概念:-

    注意:您应该将copy指定为属性属性,因为需要复制块以跟踪其原始范围之外的捕获状态。在使用自动引用计数时,您不必担心这一点,因为它会自动发生,但属性属性显示结果行为是最佳做法。有关详细信息,请参见块编程主题

    来源:-

    这是在apple文档中指定的(“您应该将副本指定为属性”)吗?你能把苹果公司的确切声明寄出去吗?
     -(void)pushVC2
       {
            __weak VC1 *weakSelf = self;
            VC2 *vc2 = [self.storyboard instantiateViewControllerWithIdentifier:@"VC2"];
           [vc2 setMyBlock:^{
               NSLog(@"Block executed");
           }];
        }