在CATransition之后释放视图控制器:我这样做了吗?

时间:2011-03-17 10:20:14

标签: iphone ios memory-management uiviewcontroller catransition

我的应用程序正在加载第一个视图(用于登录Web服务)。登录成功后,它会执行CATransition(基本kCATransitionFromRight)以显示第二个视图并隐藏第一个视图。我已将转换的委托设置为self,因此我可以使用-(void)animationDidStop:(CATransition *)theAnimation finished:(BOOL)flag

当调用该方法时(转换结束后)我想释放第一个视图,因为我不再需要它了。但是,当我拨打[firstView release](在animationDidStop:中)时,保留计数似乎没有变化。我使用[loginView retainCount]来检查这个,因为我知道它并不总是可靠的我想知道:我这样做了吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

取自“Cocoa Touch for iPhone OS 3”一书的方法类似 他们设置动画删除旧的子视图,添加新的子视图,然后提交动画。

答案 1 :(得分:0)

Jilouc 在他的评论中是对的,忘记查看“retaincount”......

如果你想确保你的对象视图firstView只是添加一个

NSLog(@"i'm removing myFirstView"); 

在其

-(void)dealloc{
}

...方法

如果您在调试器控制台窗口中获得NSLog,那么请确保以正确的方式删除/释放它...

顺便说一下......正确的方法可能是这样的:

在animationDidStop中:

if (firstView!=nil){
    [firstView.view removeFromSuperview];
    [firstView release];
    firstView=nil;
}