Если вам не требуется обновление в реальном времени, вы можете попробовать этот подход:
1) установить делегат меню:
[theMenu setDelegate:self];
2) и реализовать метод делегата:
- (void)menuWillOpen:(NSMenu *)menu {
NSUInteger count = [self.tableView numberOfRows];
[[menu itemAtIndex:0] setTitle: [NSString stringWithFormat:@"%d rows", count]];
}
Этот код будет обновлять пункт меню каждый раз, когда пользователь открывает меню. Если вы хотите обновлять его каждый раз, когда что-то в таблице изменяется, вам нужно будет использовать KVO для наблюдения за контроллером массива. Вам также нужно будет использовать KVO, если вы хотите отобразить счетчик в заголовке StatusItem.