0

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

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

谢谢你。

4

2 回答 2

1

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

于 2011-03-17T10:42:54.793 回答
0

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

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

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

在其

-(void)dealloc{
}

方法...

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

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

在animationDidStop:

if (firstView!=nil){
    [firstView.view removeFromSuperview];
    [firstView release];
    firstView=nil;
}
于 2011-03-17T11:14:15.403 回答