通过animateWithDuration块内的点访问器访问self和self的属性是否安全?
我有一些与扩展自我框架相关的动画故障,特别是当我调用self.frame时,如下所示:
[UIView animateWithDuration:timeInterval animations:^{
self.citiesTableView.frame = CGRectMake(0, 100, 320, 120);
self.frame = CGRectMake(0, 0, 320, 220);
} completion:^(BOOL completed){
if (completed) {
self.citiesTableView.frame = CGRectMake(0, 100, 320, 120);
self.frame = CGRectMake(0, 0, 320, 220);
[self.citiesTableView reloadData];
}
}];
答案 0 :(得分:2)
由于视图不保留块,因此可以安全地在块内捕获self
。当块强烈地(有意地或错误地,通过访问实例变量)捕获self
并且由视图保留时,例如,当使用块作为条形按钮项的响应时,出现问题。这里,块被执行并被丢弃。