KVO Bindings Project

From GNUstepWiki
Jump to navigation Jump to search


Student: Christopher Farber

Mentor: Nicola Pero


KVO and bindings lead to faster, easier application development, and cleaner code. It also brings GNUstep closer to compiling most Cocoa code without modification. Key Value Observing is necessary to implement bindings, and would increase the flexibility of GNUstep's KeyValueCoding implementation. Bindings support would eliminate the need for most outlets and controller code that deals with updating the GUI controls, while reinforcing the separation between Controller and View in the Model-View-Controller design pattern.


Creating the classes:

  • NSController
  • NSArrayController
  • NSObjectController
  • NSValueTransformer

Adding bindings support for existing classes; for example NSTextField, NSPopUpButton, and NSProgressIndicator


{To be agreed}


None (project not officially started)

Status as of summer 2019 (mail by David Chisnall)

KVO works. There is a cleaner way of implementing it on the GNUstep runtime (which WinObjC does, but GNUstep doesn't yet).

Regarding Cocoa bindings: Some of the bindings work, but several of the NS*Controller classes are missing functionality. Apple is quietly trying to forget Cocoa bindings if they were ever a thing (they're not supported by UIKit at all and no longer seem to be recommended by the AppKit tutorials). I don't think anything in implementing the missing parts is difficult, it's all just work. Debugging bindings is basically impossible on macOS, so don't expect debugging the implementation of bindings is going to be easier.