2010-03-16 5 views
3

Je tente actuellement de créer une sous-classe de UIImageView afin de faire télécharger son image à partir du serveur de manière asynchrone;)Y a-t-il une raison pour laquelle nous n'utilisons pas de sous-classes de UIImageView?

J'ai essayé de le faire par moi-même, mais je n'ai pas allé très loin encore: D

Quoi qu'il en soit

, je regardais ici et trouvé ceci:

AsyncImageDownload

J'ai regardé le code et le premier qui vient à l'esprit est: pourquoi un sous-classement UIView et non un UIImageView?!?

Des pensées? Cheers,

Gotye.

Répondre

1

La raison du sous-classement de UIView est que vous devriez, par exemple, afficher un indicateur UIActivityIndicator pendant le téléchargement de l'image. Ils ne le montrent pas dans leur exemple mais j'ai utilisé ce code et c'est vraiment bien. Regardez aussi les commentaires pour ce post, vous trouverez plus d'exemples de code, y compris des mises en cache et des trucs sympas.

Jetez un oeil à Wayne Cochra's comment. Son code YellowJacket.zip est très sympa.

+0

Quoi qu'il en soit, je pense que le code d'Apple http://developer.apple.com/iphone/library/samplecode/LazyTableImages/index.html#//apple_ref/doc/uid/DTS40009394 est de loin plus efficace que celui de markj;) alors je pense que je vais m'en tenir à: D – gotye

+0

Le code d'Apple couple étroitement le téléchargement de l'image et la vue de la table. Je pense que vous devriez reconsidérer en utilisant un modèle où vos images sont auto-suffisantes et peuvent à la fois télécharger le fichier, le mettre en cache et afficher l'image. Cela le rendra plus réutilisable et plus facile à comprendre quand quelqu'un (vous, dans quelques mois :) regarde la vue de la table. –

2

Une partie de la philosophie Gang of Fours design pattern est de

« « composition d'objet » faveur sur « héritage de classe ». »

Cela réduit le couplage étroit entre les objets. Changer une classe aura alors moins d'impact sur les autres classes du système. Cela rend les changements plus faciles, résultant en un système plus stable et facile à entretenir. Dans ce cas, comme mentionné précédemment, cela permet à l'image de faire d'autres choses, comme afficher un indicateur de progression.

Questions connexes