KVO Bindings Project

From GNUstepWiki
Revision as of 15:06, 20 August 2019 by Letterus (talk | contribs) (added current implementation status)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

People

Student: Christopher Farber

Mentor: Nicola Pero

Overview

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.

Deliverables

Creating the classes:

  • NSController
  • NSArrayController
  • NSObjectController
  • NSValueTransformer

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

Milestones

{To be agreed}

Progress

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.