我是iPhone编程的新手,所以我甚至可能都没有使用正确的方法...无论如何,我正在尝试制作游戏,当我想创建一个敌人时,我会创建一个新的UIImageView,就像这样:
enemyBird *asdf = [[enemyBird alloc] initWithFrame:CGRectMake(30, -20, 45, 30)];
[self.view addSubview:asdf];
当enemyBird初始化时,会产生一个NSTimer,因此敌人可以飞来飞去做自己的事情。现在,我希望在它离开屏幕之后摆脱它,在这里的代码中:
if (self.center.y > 500)
{ //[self dealloc]; //doesn't work
//[self release]; //doesn't work
//[self removeFromSuperview]; //this makes it disappear, but the NSTimer is still running
}
但我不知道该怎么做。我这样做了吗?或者我应该采取完全不同的方式吗?提前谢谢。
答案 0 :(得分:2)
对于游戏开发更好地使用cocos2d框架:这很容易
答案 1 :(得分:1)
您必须将removeFromSuperview
发送到图片视图,才能将其从主视图中删除。
同时,你使计时器失效,你可能没事。
也可以在分配/初始化图像视图并将其添加到主视图之后,您应该将其释放。
答案 2 :(得分:1)
当视图保留其所有子视图时,您可以在将其添加到控制器视图后立即释放它:
enemyBird *asdf = [[enemyBird alloc] initWithFrame:CGRectMake(30, -20, 45, 30)];
[self.view addSubview:asdf];
[enemyBird release];
在您的计时器处理程序中,当鸟离开屏幕时将其从superview中删除,将引用设置为nil(以确保您不会访问已解除分配的实例)并使计时器无效,以便它不会再次触发:
if (self.center.y > 500)
{
[enemyBird removeFromSuperview];
enemyBird = nil;
[timer invalidate];
}