EXC_BAD_ACCESS сразу после прикосновения - PullRequest
0 голосов
/ 22 ноября 2011

Я запустил очень простой проект для изучения программирования на iOS, но я получаю EXC_BAD_ACCESS после touchesBegan.

Вы можете скачать проект с DropBox здесь.

У меня в основном есть подкласс UIView, который должен рисовать круги, где бы пользователь ни прикасался.

Очень просто, но я не могу заставить его работать.

Любая помощь высоко ценится. Спасибо!

EDIT Оказывается, проблема в этой строке кода в touchesBegan:

    ts = [NSMutableSet setWithSet: [event touchesForView:self]];

Что я изменил в:

    ts = [[NSMutableSet setWithSet: [event touchesForView:self]] retain];

Ответы [ 3 ]

2 голосов
/ 22 ноября 2011

Ошибки BAD_ACCESS обычно связаны со ссылками на объекты, которые больше не существуют (то есть они были освобождены или были автоматически освобождены).Проверьте эти проблемы внутри touchesBegan или touchesEnded:

  1. Любое неправильное размещение вызовов release, когда объект все еще будет использоваться.Попробуйте закомментировать их и посмотрите, исчезла ли ошибка.
  2. Использование автоматически выпущенных объектов без их сохранения.Автоматически освобожденные объекты - это объекты, созданные с использованием имен методов, которые напрямую ссылаются на класс, например: [NSString stringWith...] или [NSArray arrayWith...] вместо использования alloc и init.

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

2 голосов
/ 22 ноября 2011

Почему вы не используете ARC ??? :) Хорошо! Вы не сохраняете свой набор ts. Обратите внимание, что setWithSet: возвращает вам автоматически выпущенный экземпляр. (Красный круг выглядит многообещающе :))

0 голосов
/ 22 ноября 2011

Чтобы узнать причину использования BAD_ACCESS Zombie в xCode, проверьте ссылку http://www.markj.net/iphone-memory-debug-nszombie/

...