У меня есть подкласс UIImageView, который периодически обновляется для разных изображений. Я использовал код ниже без проблем:
UIImage *cachedImage = [[SDImageCache sharedImageCache] imageFromKey:blobKey];
if(cachedImage==nil) {
NSData *imageData=[NSData dataWithContentsOfURL:url];
cachedImage = [UIImage imageWithData:imageData];
[[SDImageCache sharedImageCache] storeImage:cachedImage imageData:imageData forKey:blobKey toDisk:YES];
}
self.image=cachedImage;
CATransition *transition = [CATransition animation];
transition.duration = 2.0f;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionFade;
[self.layer addAnimation:transition forKey:nil];
Проблема заключается в том, что когда я решаю использовать вместо кода выше анимацию в стиле «блока», как Apple предлагает для iOS 4.0 +:
[UIView transitionWithView:self duration:2.0 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
self.image=cachedImage;
} completion:^(BOOL finished) {
// do something..
}];
После того, как я применил новый код, я получил сообщение об ошибке: «сообщение отправлено освобожденному экземпляру». (У меня включен iOS 5.1 SDK и ARC.) Есть ли какой-то аспект блочного программирования, который я должен изучить?