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