Salutations collective,Aide avec la conception d'objets pour Asynchronous Population de UIScrollView
Je suis nouveau à Cocoa et ont été chargés de travailler sur une application prototype pour iPhone et iPad en cours d'exécution 4.2. J'ai des difficultés à concevoir un processus qui remplira les données dans un objet personnalisé que j'utilise pour remplir un UIScrollView. Chaque objet personnalisé affiche des données de film (illustration, distribution, etc.) et ces données sont appelées à partir d'un service REST.
Je voudrais que cet objet Movie soit responsable de son rendu et donc "farm out" ses données ont besoin d'un objet séparé qui peut faire les appels REST réels, l'analyse syntaxique JSON, etc. J'ai essayé d'envelopper ma tête autour de l'utilisation de délégués, ou NSOperation ou callbacks directs pour fournir une solution, mais j'ai du mal à discerner quelle voie à suivre.
Je sais que je dois traiter ces données en arrière-plan, pour garder l'interface utilisateur en vie sur le thread principal, mais je lutte avec la façon de concevoir les liens entre ces objets:
TheaterViewController //ViewController that contains the UIScrollView
Actuellement, je suis peuplant la UIScrollView de TheaterViewController avec 11 (attribution arbitraire) des éléments de MovieView - MovieView montre un ActivityIndicator pour informer l'utilisateur qu'il travaille sur la fourniture du contenu
MovieItem //a single movie and it's respective data
MovieView //individual View that displays a single MovieItem content
DataAgent //background-capable object that fetches data from app server
DataWarehouse //Singleton-designed class that maintains an NSMutableArray of MovieItem's
Dans ma conception actuelle, TheaterViewController renseigne le UIScrollView w 11 MovieView. Chaque MovieView va ensuite obtenir ses propres données. Je sais comment obtenir DataAgent pour vérifier DataWarehouse pour son contenu et s'il n'est pas présent, puis appelez le service REST. Ce que je ne sais pas comment faire, c'est informer/callback/post à MovieView que DataAgent a fini d'obtenir les données (de préférence de manière asynchrone) afin qu'il puisse afficher sa vue complète.
Quelqu'un peut-il me diriger vers un document, ou un exemple qui fait ce genre de processus de rappel asynchrone?
Merci à l'avance pour tous les pointeurs vous bonnes gens viennent avec -
Arman - Merci pour votre réponse. Je vais brancher cette solution dans ma source et voir comment elle se dérobe. Je jette aussi un coup d'œil aux solutions basées sur GCD utilisant dispatch_get_global_queue(). –