Ios 谁保留这个街区?

Ios 谁保留这个街区?,ios,objective-c-blocks,Ios,Objective C Blocks,在下面的代码段中,有三种类型的块。我的问题是哪个对象引用每个块?(ARC已启用) typedef void(^CompletedBlock)(void); -(无效)viewDidLoad{ [超级视图下载]; [UIView animateWithDuration: 延迟: 选项: 动画:^{} 完成:^(BOOL finished){}]; 调度异步(调度获取全局队列(调度队列优先级默认为0), ^{}); [自我介绍方法:^{}]; } -(void)myMethod:(Completed

在下面的代码段中,有三种类型的块。我的问题是哪个对象引用每个块?(ARC已启用)

typedef void(^CompletedBlock)(void);
-(无效)viewDidLoad{
[超级视图下载];
[UIView animateWithDuration:
延迟:
选项:
动画:^{}
完成:^(BOOL finished){}];
调度异步(调度获取全局队列(调度队列优先级默认为0),
^{});
[自我介绍方法:^{}];
}
-(void)myMethod:(CompletedBlock)已完成
{
已完成();
}

动画持续时间:延迟:选项:动画:完成:
的情况下,它会立即运行
动画
块。方法返回后,没有对象存储对块的强引用。它将
完成
块存储在未指定的位置。也许它被当前的
CATransaction
保留了下来

dispatch\u async
的情况下,队列保留块


myMethod:
的情况下,没有对象存储对块的强(保留)引用。在调用期间,对块的强引用存储在堆栈上。

如果是
动画持续时间:延迟:选项:动画:完成:
,它会立即运行
动画
块。方法返回后,没有对象存储对块的强引用。它将
完成
块存储在未指定的位置。也许它被当前的
CATransaction
保留了下来

dispatch\u async
的情况下,队列保留块

myMethod:
的情况下,没有对象存储对块的强(保留)引用。在调用期间,对块的强引用存储在堆栈上

typedef void (^CompletedBlock)(void);

- (void)viewDidLoad {
    [super viewDidLoad];

    [UIView animateWithDuration:<#(NSTimeInterval)#>
                          delay:<#(NSTimeInterval)#>
                        options:<#(UIViewAnimationOptions)#>
                     animations:^{<#code#>}
                     completion:^(BOOL finished) {<#block 1#>}];

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), 
^{<#block 2#>});

    [self myMethod:^{<#block 3#>}];

}

- (void)myMethod:(CompletedBlock)completed
{
    completed();
}