I am currently in the process of trying to teach myself Cocoa development. Toward this end, I purchased a mostly-excellent book, Cocoa Recipes for Mac OS X: Vermont Reci
In your application delegate:
// LukeAppDelegate.h
#import "LukeAppDelegate.h"
#import "VRDocumentController"
- (void)applicationWillFinishLaunching:(NSNotification *)notification {
VRDocumentController *dc = [[VRDocumentController alloc] init];
}
This will make sure that an instance of VRDocumentController is created and registered as the shared document controller, preventing Cocoa from using the default NSDocumentController.
As to why you haven’t been able to use a custom object in your nib file, make sure that that you select Object (blue cube) instead of Object Controller (blue cube inside a green sphere) when dragging a new object into the nib file.
Edit: If you’re targeting an OS X version that supports restoration, -applicationWillFinishLaunching: may be too late to register a custom document controller. If the application delegate is placed inside MainMenu.xib, it should be instantiated by the nib loading process before any documents are restored, hence you can move the NSDocumentController subclass initialisation to the application delegate’s init method:
// LukeAppDelegate.h
#import "LukeAppDelegate.h"
#import "VRDocumentController"
- (id)init {
self = [super init];
VRDocumentController *dc = [[VRDocumentController alloc] init];
return self;
}