【发布时间】:2011-03-22 18:00:14
【问题描述】:
我试图弄清楚对象生命周期和引用计数如何与代码块交互。在下面的代码中,我只是做了一个简单的动画,当 UINavigationController 的堆栈上的顶视图被交换时闪烁。棘手的部分是弹出的视图控制器是定义此代码的地方。
[UIView animateWithDuration:0.2
animations:^{self.navigationController.view.alpha = 0.0;}
completion:^(BOOL finished){
UINavigationController *navController = self.navigationController;
[self.navigationController popViewControllerAnimated:NO];
[navController pushViewController:nextView animated:NO];
[nextView release];
[UIView animateWithDuration:0.2
animations:^{navController.view.alpha = 1.0;}];
}];
我的问题是(忽略动画的样子),从内存管理的角度来看,这是正确的方法吗?特别是:
(1) 当在pop+push循环中使用这种方式时,是否不再需要保留self,如other similar examples不使用blocks?
(2) 使用这些块调用 animateWithDuration:... 是否会保留定义的视图控制器(自身)直到块执行?
【问题讨论】:
标签: ios uiview ios4 core-animation objective-c-blocks