Массив, управление памятью - PullRequest
0 голосов
/ 29 февраля 2012

У меня есть некоторый код, в котором я реализовал функцию отмены, функция отмены выглядит следующим образом:

- (void) undo
{
    drawImage.image = pathArray.lastObject;
    [pathArray removeLastObject];
}

Затем у меня есть еще одна функция для захвата текущего изображения с экрана;в этой функции я получаю ошибку EXC_Bad_ACCESS на этом

[pathArray removeLastObjectatIndex:0];

В этой части программы другие вызовы функций не выполняются.Возможно, может возникнуть проблема перемещения всего массива, но я не хочу использовать менеджер отмены.

Есть ли лучший способ получить последний объект массива, а затем удалить первый и переместить весь массив на единицу?

Обратите внимание: путь к массиву MutableArray *patharray; Спасибо всем!=)

У меня просто нет идей, как это решить.Я не нашел решения в официальных документах.

1 Ответ

1 голос
/ 29 февраля 2012

В конечном счете, эта программа вряд ли будет достижимой - это подразумевает, что во многих контекстах нечего «отменять», и опция не должна быть предоставлена.Ваша проблема часто в конечном итоге лежит вверх по течению.

Если это не совсем так, вот один из подходов:

- (void)undo
{
   if (0 == self.pathArray.count) {
     self.drawImage.image = nil;
     return;
   }

   self.drawImage.image = self.pathArray.lastObject;
   [self.pathArray removeLastObject];
}

Также, [pathArray removeLastObjectatIndex:]; нереальный селектор.

Обновление

Смотрите мой ответ здесь , чтобы включить и найти зомби, и быстро найти смещение подсчета ссылок.Ваша программа никогда не должна сообщать зомби.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...