В моем приложении у меня есть цикл, который перемещается на массиве UIImage
и делает вещи с этими изображениями.
цикл работает в фоновом режиме, поэтому в начале функции я поставил:
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
и в конце
[pool release];
В цикле я создаю UIImage
, поэтому мне нужно выпустить его, потому что он предупреждает меня, если я не делаю релиз.
Когда приложение завершит цикл и перейдет к
[pool release];
это дает мне BAD_ACCESS
ошибку и вылетает приложение.
Редактировать
Это методы в цикле
UIImage *tmp = [image rotate:UIImageOrientationRight];
//do some stuff with this image
[tmp release];
Это метод поворота:
UIImage* copy = nil;
CGRect bnds = CGRectZero;
UIImage* copy = nil;
CGContextRef ctxt = nil;
CGImageRef imag = self.CGImage;
CGRect rect = CGRectZero;
CGAffineTransform tran = CGAffineTransformIdentity;
rect.size.width = CGImageGetWidth(imag);
rect.size.height = CGImageGetHeight(imag);
bnds = rect;
UIGraphicsBeginImageContext(bnds.size);
ctxt = UIGraphicsGetCurrentContext();
switch (orient)
{
case UIImageOrientationLeft:
case UIImageOrientationLeftMirrored:
case UIImageOrientationRight:
case UIImageOrientationRightMirrored:
CGContextScaleCTM(ctxt, -1.0, 1.0);
CGContextTranslateCTM(ctxt, -rect.size.height, 0.0);
break;
default:
CGContextScaleCTM(ctxt, 1.0, -1.0);
CGContextTranslateCTM(ctxt, 0.0, -rect.size.height);
break;
}
CGContextConcatCTM(ctxt, tran);
CGContextDrawImage(UIGraphicsGetCurrentContext(), rect, imag);
copy = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
if (imag) {
CFRelease(imag);
}
return copy;