2009-10-26 9 views
0

Salut à tous, voici l'affaire ...pointeur vers pointeur vers UIImage créé par NSURLConnection

J'ai un UIImage qui est en cours de chargement en arrière-plan via un NSURLConnection dans un sous-classé UIImageView. Jusqu'à ce que les données aient fini de télécharger, une image d'espace réservé est affichée. Le UIImage doit également être utilisé par un autre UIImageView.

Le problème que je vais avoir est que si je mets la deuxième image propriété à celle de l'objet sous-classé de UIImageView avant le téléchargement est terminé, le second UIImageView affiche jamais l'image téléchargée, car il est image prop pointe vers l'espace réservé.

Est-il possible de passer un pointeur vers un pointeur entre ces deux UIImageViews?

J'ai essayé des choses comme ça:

imageView2.image = &[imageView1 image]; 
imageView2.image = *[imageView1 image]; 

Mais ceux-ci ne semble pas fonctionner. Des idées?

Répondre

2

Ces pointeurs semblent particulièrement dégoûtants. Le problème avec cette façon est que, même si vous mettez à jour les données pointées par ces pointeurs, vous ne notifiez pas vos sous-classes UIImageView que les données ont changé, et donc ils ne savent pas à redessiner. Au lieu de jouer avec ce désordre de pointeur, pourquoi ne pas utiliser Key-Value Observing à la place? Si vous avez un thread séparé qui télécharge le UIImage, vous pouvez simplement dire à votre UIImageView s d'observer cette propriété et lorsque votre classe de téléchargement aura fini de télécharger toutes les données et les a placées dans la propriété, les vues recevront une notification et pourront puis affichez l'image. Vous ne pouvez pas simplement attraper le message connectionDidFinishLoading: message de NSURLConnection, puis définir la seconde image?

+1

Vous pouvez également utiliser NSNotificationCenter pour publier une notification lorsque les données ont été téléchargées. Cela vous évite d'avoir à définir un délégué ou de garder tout autre type de référence à l'observateur. –

+0

Une pièce ajoutée au puzzle ... Les deux UIImageViews sont complètement inconscients l'un de l'autre. Le UIViewController qui crée la sous-classe downloader crée également un autre contrôleur de vue qui contient le second UIViewController. Cela est également fait plusieurs fois à travers une boucle for, et un tableau d'images est passé. J'ai essayé de simplifier le cas pour l'exemple. En tous cas. Je vais regarder dans les notifications et observer. – Brad

+0

Ce n'est pas grave si les vues ne s'ignorent pas. Ils recherchent tous les deux des notifications (KVO ou autres) de la classe du téléchargeur, et non les uns des autres. Ils resteront découplés avec cette solution. –

0