从数组中删除整数

时间:2011-01-27 16:43:17

标签: iphone arrays xcode cocos2d-iphone nsmutablearray

我需要为我的精灵的坐标制作一个数组,并且我想在精灵从数组中得到坐标时删除坐标,因为我不希望另一个精灵具有相同的坐标,我似乎无法让它工作,没有错误,并在调试时说nsexception并退出。我做错了什么,我在哪里解除分配数组?当我在dealloc中释放它时,它说我需要声明它们。

CGPoint cg1 = CGPointMake(33,33);
NSValue *cg1obj = [NSValue valueWithCGPoint:cg1];

CGPoint cg2 = CGPointMake(33,97);
NSValue *cg2obj = [NSValue valueWithCGPoint:cg2];

NSMutableArray *numberxy = [[NSMutableArray alloc] init]; int pointcount = 0;
[numberxy insertObject:cg1obj atIndex:pointcount++];
[numberxy insertObject:cg2obj atIndex:pointcount++];

NSMutableArray  *sprites = [[NSMutableArray alloc] init]; int spritecount = 0;
[sprites insertObject:red1 atIndex:spritecount++];
[sprites insertObject:red2 atIndex:spritecount++];

for (int i=0; i<3;i++) {
    int rpoint = arc4random() % 3;
    int rsprite = arc4random() % 3;

    CGPoint point = [[numberxy objectAtIndex:rpoint] CGPointValue];

    CCSprite *sprite1 = [sprites objectAtIndex:rsprite];

    sprite1.position = ccp(point.x,point.y);

    if (sprite1.position.x == point.x && sprite1.position.y == point.y) {
        [numberxy removeObjectAtIndex:rpoint];
        [sprites removeObjectAtIndex:rsprite];
    }
}

1 个答案:

答案 0 :(得分:1)

你的代码很奇怪。使用后为什么定义xValue?如果之前以相同的方式定义xValue并且您现在正在重新定义xValue,则可能会发生泄漏。然后,检查新X中是否有xValue。新xValue中没有任何内容,因此if语句将评估为false,因此不会删除任何内容。

NSNumber *X = [NSNumber numberWithInt:randomNumberx];
[xValue containsObject: numberx];

xValue = [[NSMutableArray alloc]init];
if ([xValue containsObject:X]) {
    [numberx removeObject:X];
}

if语句之外的[xValue containsObject: numberx];还有什么意义?它没有目的。