NSMenu programmatically select item

Use the NSMenu method - (void)performActionForItemAtIndex:(NSInteger)index

NSUInteger idx = [[[menuItem menu] itemArray] indexOfObject:menuItem];
[[menuItem menu] performActionForItemAtIndex:idx];

For opening submenu: performActionForItemAtIndex:

For selecting and opening menu: selectItemAtIndex: + performClick:

Do not call performActionForItemAtIndex: on item that does not have submenu cause you might trigger action that might have been set by someone else.

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    NSMenu *menu = self.popup.menu;
    NSMenuItem *item = [menu itemAtIndex:2];
    [item setAction:@selector(terminate:)];
    [item setTarget:NSApp];
}

- (IBAction)action:(id)sender {
    //[self.popup.menu performActionForItemAtIndex:2]; -> if not submenu this will quit your app
    [self.popup selectItemAtIndex:2]; //-> first select menu item
    [self.popup performClick:nil]; //-> open menu - will not quit app
}