- (void) applicationWillFinishLaunching: (NSNotification *)not;contains code for the initialization process of the application. This usually means creating the application's main objects; in our case, the menu and the only application's window. You can't (and shouldn't) display any window in this method.
Instead, the method
- (void) applicationDidFinishLaunching: (NSNotification *)not;contains a sequence of user-visible actions to be taken just after the application became active: typically, popping up a window or a panel to the user.
It should be mentioned that this is not the only possible way of organizing the start-up of an application.