ios - NSBlock 的访问限定符是复制还是弱还是强?

标签 ios objective-c-blocks

我有 View Controller 1 比方说 VC1,我正在插入我的另一个 View Controller 比方说 VC2

  1. VC1 中,我的 block 类型定义如下

    #define typedef void(^Myblock)();

  2. VC2 中,我声明了一个 block 作为属性,如下所示

    @property(nonatomic, weak) MyBlock myBlock;

  3. 在推送 VC2 之前,我分配了一个 block 文字如下

 -(void)pushVC2
   {
        __weak VC1 *weakSelf = self;
        VC2 *vc2 = [self.storyboard instantiateViewControllerWithIdentifier:@"VC2"];
       [vc2 setMyBlock:^{
           NSLog(@"Block executed");
       }];
    }
  1. 我的问题是,如果我从 VC2 调用我的 block , block 不会执行如果我将该属性声明为副本,则执行 block 。任何人对此都有解释。

最佳答案

希望这会清除你的概念:-

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

来源:- https://developer.apple.com/library/ios/documentation/cocoa/conceptual/ProgrammingWithObjectiveC/WorkingwithBlocks/WorkingwithBlocks.html

关于ios - NSBlock 的访问限定符是复制还是弱还是强?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26010899/

相关文章:

ios - 在不知道高度的情况下在单元格内异步下载图像

ios - 从 Swift 分配的 Objective-C block 在分配后为零

ios - 从这样的日期中删除时间 2016-02-10 00 :00:00

ios - 在一个 block 中保留循环

ios - 隐藏 UITextField 的光标

ios - 步骤里程碑 |里程碑听众| Mapbox iOS 等效项

objective-c - 将实例变量复制到 Objective-C block 中

ios - SCLAlertView 添加按钮问题

ios - Google maps turn by turn GPS 在用于 iOS 开发的应用程序导航中

android - 如何为事件列表构建 API,以便将来更新