0

我的游戏中有大约 10 个可拖动对象需要在某些时候从游戏中完全删除,在开始新游戏之前不需要使用这些对象......

目前我说 self.imageView = nil

但是,我以这种方式丢弃的图像越多,游戏就会变得越慢。我相信这是因为图像并没有完全消失,即使它们不在视野范围内,它们也都被放在 (0, 0) 处。

为了提高我的表现,我还能如何摆脱这些图像视图?

这是我将图像添加到视图中的方法:

@interface GameView : UIView
{
   UIImage *ball;
}

@property UIImageView *redBall;

-(id)initWithBallImage:(UIImageView *)ball;

@implementation GameView

-(id)initWithBallImage:(UIImageView *)ball
{
  self = [super init]
  if (self)
     {
      _redBall = ball;
      return self;
   }
  return nil; 
}

-(void)spawnBallWithColor:(BallColor)ballColor intoArray:(NSMutableArray *)array atPoint:(CGPoint)point 
{
  switch (ballColor) {
    case kRedBall:
      ball = [UIImage imageNamed:@"redBall.png"];
      self.redBall = [[UIImageView alloc] initWithImage:ball];
      self.redBall.center = point;
      [array addObject:self.redBall];
      [self addSubview:self.redBall];

      break;
}

//I use the above method in an initWithLevel: method...

然后从视图中删除对象...

[self.redBall removeFromSuperview];
4

1 回答 1

0
[self.redBall removeFromSuperview];

你还需要

self.redBall = nil;

您需要将其从您添加到的数组中删除。

此外

self.redBall = [[UIImageView alloc] initWithImage:ball];

如果您不使用自动引用计数,则会泄漏内存。

于 2013-06-02T19:52:16.510 回答