Iphone 如何在每次调用计时器时使用不同的实例变量创建新的UIImageView

Iphone 如何在每次调用计时器时使用不同的实例变量创建新的UIImageView,iphone,objective-c,cocoa-touch,uiimageview,Iphone,Objective C,Cocoa Touch,Uiimageview,你的朋友怎么样 我想在每次调用计时器时创建一个新的实例变量,例如 numberofObjects += 1; i = numberofObjects; UIImageView *Object[i] = [[UIImageView alloc] initWithFrame:CGRectMake(randomx,0,36 ,36)]; UIImage *imag = [UIImage imageNamed:@"ball.png"];

你的朋友怎么样

我想在每次调用计时器时创建一个新的实例变量,例如

        numberofObjects += 1;
    i = numberofObjects;

    UIImageView *Object[i] = [[UIImageView alloc] initWithFrame:CGRectMake(randomx,0,36 ,36)];        
    UIImage *imag = [UIImage imageNamed:@"ball.png"];
    [Object[i] setImage:imag];
    [self.view addSubview:Object[i]];
有办法做到这一点吗


任何评论都将不胜感激。

这并不难做到。我假设您只会拥有最大数量的UIImageView,因为这会增加很多开销,如果允许它永远持续下去,您可能会遇到问题。在.h文件中

@interface viewController : UIViewController {
  int numberAdded;
  NSTimer * timer;
  UIImageView * currentImageView;
  NSMutableArray * arrayOfImageViews;
}

- (void)addNewImageView;

@end
在.m文件中:

#define MaxImageViews 20 // This is changeable!

@implementation viewController

- (void)viewDidLoad; {
  [super viewDidLoad];
  numberAdded = 0;
  arrayOfImageViews = [[NSMutableArray alloc] init];
  timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(addNewImageView) userInfo:nil repeats:YES];
}

- (void)addNewImageView; {
  if(numberAdded >= MaxImageViews){
    [timer invalidate];
    timer = nil;
    return;
  }
  int randomX = arc4random() % 320; // Gives value from 0 - 319.
  int randomY = arc4random() % 480; // Gives value from 0 - 479.
  UIImageView * imageView = [[UIImageView alloc] initWithFrame:CGRectMake(randomX, randomY, 36, 36)];
  imageView.image = [UIImage imageNamed:@"ball.png"];
  [self.view addSubview:imageView];
  [arrayOfImageViews addObject:imageView];
  [currentImageView release];
      currentImageView = imageView;
    }

- (void)dealloc; {
  [currentImageView release];
  [arrayOfImageViews release];
  [super dealloc];
}

@end

这将跟踪阵列中的所有图像视图
arrayOfImageViews
,您可以通过调用
[arrayOfImageViews objectAtIndex:i]
访问第i个图像视图。
currentImageView
指针跟踪添加的最新UIImageView。希望有帮助

将图像视图的指针存储在对象中。

让我猜猜,您来自JavaScript?感谢您的评论,但我正在寻找一种方法来更改为ponters名称,例如imageView1、imageView2、imageView3。。。因此,我可以将其添加到NSMutableArray,并检查与另一个imageView的冲突。你有什么想法吗?我不知道你所说的“更改为ponters名称,例如imageView1、imageView2、imageView3…”是什么意思。您的意思是要跟踪每个ImageView吗?如果是这样,我将编辑上面的代码。好的,对于e.j,我有一个NSMutableArray,它将填充UIimageView,我每隔.5秒创建一个名为imageView的指针。所以我要做的是改变指向imageView1,imageView2的指针。。。。当定时器被调用时。这就像计时器运行imageView1,然后计时器再次运行,现在它的imageView2结束了,等等。问题是,我需要为该对象获取一个新指针,以便检查碰撞。例如object1、object2、object3…@Jean Pierre:变量名和指针是两个不同的东西。如果要将每个图像视图与名称或其他唯一键相关联,请使用NSMutableDictionary。谢谢,但有没有办法做到这一点?我有一个NSMutableArray,它将使用UIimageView填充,我每隔.5秒创建一个名为imageView的指针。所以我要做的是改变指向imageView1,imageView2的指针。。。。当定时器被调用时。这就像计时器运行imageView1,然后计时器再次运行,现在它的imageView2结束了等等@Jean-Pierre:同样,这与指针无关。你说的是变量名。否:不能在运行时更改变量名。您需要做的是保留一个
NSUInteger
类型的变量,该变量将索引保存到数组中。(请注意,C和Cocoa中的数组索引从0开始,而不是1。)声明一个实例变量,其中一个实例变量包含指向NSMutableArray对象的指针,另一个实例变量包含一个整数。将当前感兴趣的图像视图的索引保留在NSUInteger变量中,并使用该索引从数组中检索图像视图。