Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Удаление целых чисел из массива

Автор вопроса: DangermouseОтветов: 1

Мне нужно создать массив для координат моих спрайтов, и я хотел удалить координату, как только спрайт получит эту координату из массива, поскольку я не хочу, чтобы другой спрайт имел ту же координату, я могу Кажется, он не работает, ошибок нет, и при отладке он говорит 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];
    }
}

xcodeiphonearraysnsmutablearraycocos2d-iphone

Ответы

Ответ 1 · рейтинг 1 · David

Ваш код странный. Почему xValue определяется после его использования? У вас может быть утечка, если xValue было определено ранее таким же образом, а теперь вы переопределяете xValue. Затем вы проверяете, находится ли X в новом xValue. В новом xValue ничего нет, поэтому оператор if будет оценен как ложный, поэтому ничего не будет удалено.

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

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

Кроме того, в чем смысл [xValue containsObject: numberx]; вне оператора if? У него нет цели.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы