In a non-document based application, one for each window. I am talking only about controllers that you write yourself, and not about window controllers, view controllers, object controllers, array controllers, tree controllers, or dictionary controllers. (Note that some people make their NSWindowController user controller.) I also do not consider the application delegate to which your root controller (s) belongs.
In a single-window application, this usually means one user controller.
In a document-based application, you do not write controllers at all, but write one or more subclasses of NSDocument instead of one for each type of document. Each document object usually has exactly one window.
, , ( ), : , NSFontPanel NSColorPanel.