#10 Communication Patterns mit Florian Kugler

Florian Kugler und ich diskutieren, wie die verschiedenen Teile von unseren iOS-Anwendungen miteinander Daten austauschen können. Dabei sprechen wir über Target-Actions, Delegates, Blocks, Notifications und Key-Value-Observing sowie ihre jeweiligen Stärken und Schwächen. Abschließend geht es darum, wie man bei dieser Auswahl den Überblick behält.


Alternativ zum Download könnt Ihr UISprech bei iTunes oder mit einem anderen Podcast-Client abonieren.

Shownotes

Hier die Links und Anmerkungen zu dieser Episode:

Florian Kugler

Target-Action

Delegate

Blocks

Notifications

Entscheidungshilfen

Kontaktdaten von Florian Kugler

Diese und alle anderen Folgen von UISprech sind veröffentlicht unter der CC BY-SA 3.0 Lizenz.

Ein Gedanke zu „#10 Communication Patterns mit Florian Kugler

  1. Ole Begemann

    Eine Korrektur zu KVO: ab 56:50 habt ihr gesagt, man müsste willChangeValueForKey: und didChangeValueForKey: händisch aufrufen, wenn man den Setter einer Property selbst implementiert und trotzdem KVO unterstützen will.

    Das stimmt nicht. Solange eine Property nicht explizit von automatischen KVO-Notifications ausgeschlossen wird (durch Überschreiben von automaticallyNotifiesObserversForKey:, funktioniert KVO auch bei selbstgeschriebenen Settern ohne weiteres. Technisch funktioniert das, weil die Runtime in dem Moment, wo sich ein Observer für eine Property anmeldet, zur Laufzeit eine neue Klasse von dem observierten Objekt ableitet und in dieser entsprechende Methoden implementiert, die ihrerseits willChangeValueForKey: und didChangeValueForKey: aufrufen. Mehr dazu bei Mike Ash.

    Der einzige Fall, wo man die Methoden händisch aufrufen muss, ist bei direkter Manipulation der Instanzvariable.

    Antworten

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>