I mitt grävande i Cocotron hittade jag referenser till några intressanta klasser, där alla ärver från _NSBinder . Det visar sig att i vanliga Apple-AppKit finns en klass kallad NSBinder som är odokumenterad. Vad är detta?
Mysteriösa NSBinder
Ola Bäckström 25 juni 2008
Bakgrund
Den här korta artikeln skrapar lite på ytan runt NSBinder. Det kan vara intressant när man vill göra egna GUI-kontroller som är “bindings-enablade”. Saken är den att typiska operationer man skulle vilja göra för att hålla sitt UI-objekt synkat både upp- och nedströms längs knytningen är implementerade i NSBinder (och dess olika subtyper).
“Fyndet”
Friskrivning: naturligtvis är inte jag den förste som funnit NSBinder. Men det verkar vara få (=0?) direkta referenser med information på nätet.
Själva upptakten till fyndet var som sagt grävandet i Cocotron. Hittade dessa 3 klasser
_NSBinder
_NSKVOBinder
_NSMultipleValueBinder
Dessa skapas och används i kontroller för att sköta datatransporten som är involverad i en “binding”. Både i den riktning man automatiskt får när man anropar “bind:toObject:withKeyPath:options:” (nedströms) men också i motsatt riktning (uppströms).
Det är uppenbart att gänget runt Cocotron redan funnit ut vad Apples egen NSBinder gör, men Cocotron-implementationen är dock inte en exakt spegel av Apples varianter. Däremot är funktionen för det informella protokollet BindingSupport
den samma. Det är ju ett publicerat API, som då följdaktligen måste implementeras till punkt och pricka om man ska göra en klon av Cocoa.
Jag drog sonika upp F-scripts Klassbrowser , och där letade jag efter klasser med binder
i sig. Mycket riktigt:
I denna klassbrowser ser man att NSBinder
ärver direkt från NSObject
och vidare att ett helt gäng klasser i sin tur ärver från NSBinder
.
Browern visar vilka klassmetoder (meta) methods som finns till varje klass, men den listar inte de vanliga metoderna som agerar på objekt (av den klassen), tyvärr. Jag kan dock inte F-script tillräckligt för att bedöma om jag enkelt kan lista alla metoder.
Används dessa hemliga klasser?
Ja, om man googlar med sökorden “NSBinder” och “cocoa” finner man en massa stackdumpar. Men är det någon (utanför Apple) som direkt, med egen vilja använder dem i sina egna kontrollklasser… Om jag bara visste!
« Fånga exceptions i Xcode _NSBindingAdaptor: Under ytan ... del 2 »