опять про подсчет ссылок
От: Lorenzo_LAMAS  
Дата: 27.07.11 08:49
Оценка:
на самом деле, правильнее сказать, опять про управление ресурсами.

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

UIImage *image;


Проблема в следуюшем:

в initWithFrame создается

image = [self createImage:frame];

......

- (UIImage *) createImage : (CGRect)rect
{
   UIGraphicsBeginImageContext(rect.size);
   CGContextRef ctx = UIGraphicsGetCurrentContext();
   //.....     здесь что-то рисуется с использованием этого контекста
   // make image out of bitmap context
   UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
   // free the context
   UIGraphicsEndImageContext();

   return newImage;
}


далее, мне нужен CGImage этого image.

если я обращаюсь к этому свойству, например, в drawRect моего view, то все нормально.
а вот если я пытаюсь использовать его в обработчике жеста, например:


- (void) handleTap : (UITapGestureRecognized *)tap {
....
   CGImageRef cgImage = image.CGImage;//то программа тут же жестоко помирает с EXC_BAD_ACCESS
....
}


если в initWithFrame добавить [image retain], то все нормально. Но совершенно непонятно, как и что определяет, когда я могу обращаться к CGImage.
может, это как-то с потоками связано?
Еще вопрос — как-то где-то описано как, когда и какие создаются autorelease pools и в каких из них регистрируются мои объекты, создаваемые в тех или иных переопределенных функциях моего view?
Of course, the code must be complete enough to compile and link.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.