Я предполагаю, что здесь происходит то, что в какой-то момент вашего выполнения этот метод вызывается, когда у вас есть что-то, хранящееся в imageRaw
, но нет ничего в anImage
.В этом случае ваш объект в imageRaw
будет освобожден, но ничего нового не будет сохранено в нем.Это оставляет адрес памяти для освобожденного объекта в imageRaw
, но объект больше не существует.Затем, в следующий раз, когда вы запустите метод, он проверяет, не является ли imageRaw
ненулевым (что и есть, поскольку он все еще хранит этот адрес памяти), пытается вызвать release
в этой памяти и завершается неудачно.Чтобы избежать этого, вы можете установить imageRaw
на ноль каждый раз, когда вызываете release для него:
if (imageRaw)
[imageRaw release];
imageRaw = nil;
.
.
.
if (anImage)
imageRaw = . . .