Frage

Ich habe eine iPhone-Anwendung, die im Grunde von Informationen von einer API bekommen (in XML, aber vielleicht JSON schließlich). Die Ergebnisobjekte werden in der Regel in View-Controller (Tabellen hauptsächlich) angezeigt.

Hier ist die Architektur gerade jetzt.

Ich habe NSOperation Klassen, die die verschiedenen Objekte aus dem Remote-Server zu holen. Jede dieser NSOperation Klassen wird eine benutzerdefinierte Delegatmethode nehmen, die die resultierenden Objekte feuern zurück, wie sie analysiert werden, und dann schließlich ein Verfahren, wenn keine weiteren Ergebnisse verfügbar sind. So wird das Protokoll für die Teilnehmer sein, so etwas wie:

(void) ObjectTypeResult:(ObjectType *)result;
(void) ObjectTypeNoMoreResults;

ich glaube, die Lösung funktioniert gut, aber ich mit einem Bündel von Delegierten Protokolle am Ende um und dann haben meine Ansicht-Controller alle diese Delegatmethoden zu implementieren. Ich glaube nicht, seine so schlecht, aber ich bin immer auf der Suche nach einem besseren Design.

Also, ich denke an NSNotifications mit der Verwendung der Delegierten zu entfernen. Ich konnte das Objekt in dem userinfo Teil der Anmeldung ist und nur Post Objekte wie erhalten, und dann einem abschließendes Ereignis, wenn nicht mehr zur Verfügung steht. Dann konnte ich nur in jedem View-Controller eine Methode habe alle Daten zu erhalten, auch wenn in einem Controller mehrere Objekte verwendet wird. †

So kann jemand mit mir teilen einige Vor / Nachteile der einzelnen Ansätze. Soll ich meinen Code zu verwenden, um Ereignisse betrachten Refactoring eher dann die Delegierten? Ist man besser als die anderen in bestimmten Situationen? In meinem Szenario suche ich wirklich keine Benachrichtigungen an mehreren Stellen zu erhalten, so vielleicht die protokollbasierte Delegierten der Weg zu gehen.

Danke!

War es hilfreich?

Lösung

Eigentlich Ihr Design klingt Sound. Der klare Cocoa Ansatz wird mit Delegierten und ist sehr bevorzugt, um Objekte um zu werfen. Auch die Definition Ihrer Protokolle auf diese Weise macht den Code sehr explizit und leicht zu verstehen. Alles in allem: halten Sie die gute Arbeit

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top