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
- online Magazon objc.io
- SproutCore JavaScript framework
- Deckset – on neues Projekt, das Florian mitentwickelt hat
- Florians Artikel bei objc.io
Target-Action
- Responder Chain bei ViewControllern
Delegate
- Buch: Design Patterns von der GoF
- Strategy-Pattern
- Buch: Cocoa Design Patterns von Erik M. Buck und Donald A. Yacktman
Blocks
- Post zu Retain Cycles bei Cocoa with Love
- UISprech-Folge #5: Unit Testing mit Sven Günther
- NSURLSession
Notifications
- Buch: Refactoring von Martin Fowler, in dem er über “Code Smells” schreibt
- Releasenotes zu OS X 10.8 mit dem Problem mit NSNotificationQueue
- Blog-Post KVO Considered Harmful von Soroush Khanlou
- dexy, ein flexibler Dokumentations-Generator
- NSOperationQueue
- THObserversAndBinders
Entscheidungshilfen
- Diagram aus Florians Artikel
- FuckingBlockSyntax.com
- Artikel zu KVC und KVO von Daniel Eggert bei objc.io
- Buch: Design Patterns von der GoF
- Buch: Cocoa Design Patterns von Erik M. Buck und Donald A. Yacktman
Kontaktdaten von Florian Kugler
- Twitter: @FlorianKugler
- GitHub: dkduck
- FlorianKugler.com
- objc.io
Diese und alle anderen Folgen von UISprech sind veröffentlicht unter der CC BY-SA 3.0 Lizenz.
Eine Korrektur zu KVO: ab 56:50 habt ihr gesagt, man müsste
willChangeValueForKey:
unddidChangeValueForKey:
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 ihrerseitswillChangeValueForKey:
unddidChangeValueForKey:
aufrufen. Mehr dazu bei Mike Ash.Der einzige Fall, wo man die Methoden händisch aufrufen muss, ist bei direkter Manipulation der Instanzvariable.