Ans. kindly provided by Ben Flynn:
I put the
sessionWindowControllers = [[NSMutableArray alloc] initWithCapacity:1];
in applicationDidFinishLaunching, but since awakeFromNib is called first, we are trying to add an instance of session to the array before it even exists.
Solution: put array init inside the awakeFromNib before we make our first window.
- (void) awakeFromNib {
sessionWindowControllers = [[NSMutableArray alloc] initWithCapacity:1];
[self newSessionWindow:nil];
}