私はUIImageViewのサブクラスを持っています。上記の代わりにコードで、私が使用することを決定したとき[UIViewAnimationState animationDidStop:finished:]:メッセージが割り当て解除されたインスタンスに送信されました
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];
問題があり、「ブロック」は、アップルのようにスタイルのアニメーションは4.0+ iOS用示唆:私は何の問題もなく以下のコードを使用
[UIView transitionWithView:self duration:2.0 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
self.image=cachedImage;
} completion:^(BOOL finished) {
// do something..
}];
新しいコードを適用した後、「メッセージが割り当て解除されたインスタンスに送信されました」というエラーメッセージが表示されます。 (私はiOS 5.1 SDKとARCを有効にしています)ブロック学習の面はありますか?
ブロック実行前に 'self.retainedImage = cachedImage'を呼び出すことで、提案したように追加のホルダープロパティを追加しようとしました。しかし、私はまだメッセージを受け取りました: - [UIViewAnimationState retain]:解放されたインスタンスにメッセージが送られました。 (元の投稿にcachedImageを作成した方法のコードを追加しました。) –