NSMutableArray withObject(UIImageView *)

时间:2010-04-10 05:11:06

标签: iphone uiimageview nsmutablearray

我正在尝试使用UIImageViews加载NSMutableArray。一切都很好。

不幸的是,我不知道如何在可变数组中使用这些对象。

以下是一些代码:

UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
NSMutableArray *array = [NSMutableArray new];
[array loadWithObject:(UIImageView *)imageView];
[imageView release];

这就是我所做的事情。这就是我想要做的事情:

[array objectAtIndex:5].center = GCRectMake(0, 0);

但这不起作用。我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

好的,我会解释你遇到的问题。您要做的事情的方法如下:

UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
NSArray *array = [NSArray arrayWithObject:imageView];
[imageView release];
[[array objectAtIndex:0] setCenter:CGPointMake(0.0,0.0)];

首先,没有方法-[NSMutableArray loadWithObject:]。同样,对于您的示例,您甚至不需要可变数组。可变对象有它们的位置,但我通常会尝试使用不可变对象;因此,我使用了NSArray

接下来,在将对象添加到数组时,永远不需要对对象进行类型转换。有几个原因导致您的示例不起作用:

  1. 您正在访问数组中的第六个(从一个开始)对象。该索引是否有UIImageView的实例?

  2. 出于某种原因,只有当编译器知道您要向其发送消息的对象的类型时,getter和setter的点符号才有效。由于数组中出现的对象类型在编译时不明确,因此不能使用点符号。相反,只需使用老式的Objective-C方法发送语法(“括号和冒号”)。

  3. 最后,它是核心图形,而不是 Gore Craphics :因此前缀为CG,而不是GC。此外,-[UIImageView setCenter:]需要CGPoint,而不是CGRect。所以你想要的功能是CGPointMake

  4. 祝你好运!如果这有助于澄清某些问题,请告诉我。

答案 1 :(得分:3)

我认为你应该参考NSMutableArray

但是,我只是概述了NSMutableArray。

  • NSMutableArray =下一步(NS)可变阵列
  • 可变意味着可以在需要时修改数组。
  • 现在,这个可变数组可以容纳任何类型的对象。
  • 假设我想将字符串存储在数组中。我会写下面的陈述。

NSMutableArray *anArray=[[NSMutableArray alloc] init];
[anArray addObject:@"Sagar"];
[anArray addObject:@"pureman"];
[anArray addObject:@"Samir"];

  • 在这里,我发现您需要将imageView存储在您的要求中。

NSMutableArray *anArray=[[NSMutableArray alloc] init];
UIImageView *imgV1=[[UIImageView alloc] initWithFrame:CGRectMake(10,50,60,70)];
UIImageView *imgV2=[[UIImageView alloc] initWithFrame:CGRectMake(10,110,60,70)];
UIImageView *imgV3=[[UIImageView alloc] initWithFrame:CGRectMake(10,170,60,70)];
UIImageView *imgV4=[[UIImageView alloc] initWithFrame:CGRectMake(10,210,60,70)];
[anArray addObject:imgV1];
[anArray addObject:imgV2];
[anArray addObject:imgV3];
[anArray addObject:imgV4];

  • 现在,一旦将ImageViews添加到数组中,将数据视图视图释放为数组就会保留计数。

[imgV1 release];
[imgV2 release];
[imgV3 release];
[imgV4 release];

  • 上面的代码会将图像添加到NSMutableArray
  • 当你使用数组中的一个图像时,只需记下这个东西
    UIImageView *x=[anArray objectAtIndex:0];

  • 希望以上描述适合您。

  • 如果您不理解,请添加评论。