2011-01-16 14 views
32

Cocoa per Mac OS X supporta la tecnologia Cocoa Binding, riducendo la necessità del codice della colla tra le viste e i modelli.C'è qualche motivo tecnico/concettuale per cui iOS non supporta Cocoa Bindings?

Ricreare associazioni di cacao su KVC su KVO sembra fattibile con l'aiuto del codice sorgente di cocotron.

Esiste qualche motivo tecnico o concettuale per cui le associazioni di cacao non fanno parte dell'SDK? Sto pensando a prestazioni, mancanza di garbage collection, mancanza di supporto KVC dagli elementi dell'interfaccia utente (ad esempio UISlider).

+2

Gli attacchi di cacao esistevano molto prima della raccolta dei rifiuti, quindi puoi escluderlo. –

+4

Ho creato un semplice meccanismo di binding (vale a dire senza trasformatori di valore): vedere NSObject + SimpleBindings in https://github.com/mruegenberg/objc-utils/tree/master/CoreFoundationAdditions Nessun supporto per il generatore di interfacce al momento, ma aiuta a semplificare il codice. – mrueg

risposta

7

binding sul desktop richiede:

  1. Tutti i componenti UI adatti per esporre attacchi per le loro proprietà importanti
  2. attuazione di NSArrayController infrastruttura di gestione di selezione

In iOS, punto 2 diventa meno di un problema. È raro (e forse anche una cattiva progettazione dell'interfaccia utente) avere un layout di visualizzazione principale in cui è possibile effettuare selezioni multiple. Questo è dove NSArrayController arriva davvero in proprio.

binding per un UITableView diventare meno pratico come l'attuale NSArrayController disegno non si estendono a più sezioni, titoli ecc

punto 1 sarebbe utile avere. Tuttavia richiede una grande quantità di lavoro da parte di Apple per implementare il supporto dei bind in tutti i controlli UIKit. Presumo che non sia mai diventata una priorità sufficientemente alta da poter implementare.

+0

Mike, grazie per la risposta. –

+2

In ritardo per questa festa, ma non dimenticare NSTreeController. Anche se potresti desiderare di poterlo fare (ba-dum tish). In realtà lo hanno risolto. Ma avrebbe potuto gestire le sezioni tableview che penso. Inoltre, la selezione multipla è attualmente simulata in modalità modifica. Dati i limiti delle interfacce touch (senza tasti modificatori), questo è quello con cui siamo bloccati. Ma penso che un controller di array sarebbe fantastico su iPad con dettagli principali quando si desidera modificare un elenco filtrato. –

+4

Lego spesso '@ properties' a caselle di controllo e campi di testo nell'interfaccia utente per le app di Mac OS X ... sarebbe bello poterlo fare in iOS. Forse la ragione per cui Apple non l'ha inclusa è perché sono piuttosto difficili da eseguire il debug ... la traccia dello stack che si ottiene quando si incasina un Cocoa Binding è piena di chiamate all'interno dell'SDK che rende piuttosto difficile scoprirlo cosa hai fatto di sbagliato – ArtOfWarfare

Problemi correlati