Who retains block?
<p>In the following code snippet, there are three types of block. My question is which object references each block? (ARC enabled)</p>

<pre><code>typedef void (^CompletedBlock)(void);

- (void)viewDidLoad {
    [super viewDidLoad];

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

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), 
^{&lt;#block 2#&gt;});

    [self myMethod:^{&lt;#block 3#&gt;}];

}

- (void)myMethod:(CompletedBlock)completed
{
    completed();
}
</code></pre>