Cocoa text system


The Cocoa text system is the linked network of classes, protocols, interfaces and objects that provide typography and text field editing capabilities to Cocoa applications on macOS. It is the primary text-handling system in macOS. Although "extremely complex", the standard text-handling abilities of the Cocoa text system have been widely praised as without peer. GNUSTEP implements a similar, broadly-compatible system.
Derived from OPENSTEP, the Cocoa text system can use many of the Emacs keybindings that programmers are familiar with. Users interact with two classes, NSTextField or NSTextView. Each NSTextField uses a shared instance of a NSTextView called the "field editor". This was done to reduce high memory requirements that would arise if every field implemented its own NSTextView object graph when only one field can actually have focus at any time.
The Cocoa text system uses a Model-View-Controller design pattern. The view layer is handled by NSTextView and NSTextField, NSLayoutManager and NSTextContainer are the controller layer, and NSTextStorage is the model.
The Cocoa text system also interacts with Services to provide standard streams functionality in a GUI environment. It is possible to implement a fully featured rich text editor in only a few lines of code.