Странная проблема с UInt8 в iPhone (EXC_BAD_ACCESS) - PullRequest
1 голос
/ 23 декабря 2009

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

Отладчик показывает:

dataref outofscope

Мой код

CGImageRef img=previewImageView.image.CGImage;
NSLog(@" Image : %@ ", previewImageView);
CFDataRef dataref=CopyImagePixels(img);
CFDataRef dataref1=CopyImagePixels(img);
//UInt8 *data=(UInt8 *)CFDataGetBytePtr(dataref);
//UInt8 *original=(UInt8 *)CFDataGetBytePtr(dataref1);

UInt8 *data=nil;
data=(UInt8 *)CFDataGetBytePtr(dataref);
UInt8 *original=nil;
original=(UInt8 *)CFDataGetBytePtr(dataref1);
//original=data;
int length=CFDataGetLength(dataref);

Пожалуйста, помогите .........

1 Ответ

1 голос
/ 23 декабря 2009

Основной причиной EXEC_BAD_ACCESS является попытка доступа к объектам релиза.

Чтобы узнать, как решить эту проблему, прочитайте этот документ: DebuggingAutoReleasePool

Даже если вы не думаете, что «выпускаете автоматически выпущенные объекты», это относится к вам.

Этот метод работает очень хорошо.

Таким образом, это объясняет, как использовать класс отладки NSZombie Cocoa и инструмент командной строки «malloc_history», чтобы точно определить, к какому освобожденному объекту был получен доступ в вашем коде.

Полезно установить точку останова на objc_exception_throw. Таким образом, отладчик должен выйти из строя, когда вы получите EXC_BAD_ACCESS.

Инструкции можно найти здесь http://www.cocoadev.com/index.pl?DebuggingTechniques

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