Objective c NSMUTABLEARRY在最后一个对象之前删除对象1

Objective c NSMUTABLEARRY在最后一个对象之前删除对象1,objective-c,ios6,nsmutablearray,Objective C,Ios6,Nsmutablearray,我在nsmuataablearray中有许多UIImageView,我需要从视图中删除某个UIImageView,但我认为如果我释放UIImageView,它仍然会在数组中 我不想那样,但有个小问题。我需要删除的UIImageView正好是数组中最后一个对象之前的一个对象,因此我不能使用RemovelAsObject。我确实知道标签号,但我不能这样写,因为我会在使用它时更改数组 for (UIImageView *k in array1) { if (k.tag==tagzahl-1)

我在
nsmuataablearray
中有许多
UIImageView
,我需要从视图中删除某个
UIImageView
,但我认为如果我释放
UIImageView
,它仍然会在数组中

我不想那样,但有个小问题。我需要删除的
UIImageView
正好是数组中最后一个对象之前的一个对象,因此我不能使用
RemovelAsObject
。我确实知道标签号,但我不能这样写,因为我会在使用它时更改数组

for (UIImageView *k in array1) {
    if (k.tag==tagzahl-1) {
       if (x==1){
          [k removeFromSuperview];
          [array1 remove object:k];
       }
    }
}

我正在使用:
[array1 addObject:myimage]
UIImageView
s添加到数组中,因此我不知道索引。

如果您知道您所说的标记,那么

if ([array1 count] >= 2)
{
    NSUInteger index = [array1 count] - 2;
    UIImageView *view = [array1 objectAtIndex:index];
    [array1 removeObjectAtIndex:index];
    [view removeFromSuperview];
}
UIView *view = [viewContainingImageView viewWithTag:tagzahl-1];
[view removeFromSuperview];
[array1 removeObject:view];

问题在于,在这样迭代NSArray时,无法从NSArray中移除对象。如果希望保持循环的原样,那么应该保留一个指向要删除的对象的指针,并在完成迭代后将其删除。。尽管最好的方法是根本不迭代它们,直接引用它们。Paul.s&trojanfoe的答案以两种不同的方式实现了这一点。没有称为viewContainingImageView viewWithTag:Nope的函数。这应该由指向实际包含图像视图的视图的指针替换。