Xcode не распознает тип моей переменной - PullRequest
0 голосов
/ 04 февраля 2010

Я создаю объект с:

NSMenu *appMainMenu = [[NSMenu alloc] initWithTitle:@"MyApp"];

(Не обращайте внимания на тот факт, что я создаю это меню программно, а не с помощью Nib-файла. Я понимаю недостатки этого)

Меню отображается правильно в меню.

Однако, когда я пытаюсь вызвать любой экземплярный метод, такой как:

 [appMainMenu addItemWithTitle:@"MyTitle" action:@selector(myaction:) keyEquivalent:@"t"];

XCode предлагает некоторые дополнения, но ни один из них не появляется из NSMenu.
Я пробовал оба

#import <AppKit/AppKit.h> and #import <AppKit/NSMenu.h>

Методы экземпляра, безусловно, есть в NSMenu.h, и, как я уже сказал, он устанавливает мое меню.Он просто не устанавливает пункт меню.Это плюс отсутствие завершений заставляет меня думать, что мой appMainMenu не распознается как объект NSMenu, даже если он явно действителен.

Что очевидного я пропустил?

Ответы [ 2 ]

0 голосов
/ 04 февраля 2010

Я создаю объект с:

NSMenu *appMainMenu = [[NSMenu alloc] initWithTitle:@"MyApp"];

Вы должны выделить его из [NSMenu menuZone].

(Это та же зона, что и по умолчанию в 10.6.1, но если в документации сказано, что вы должны использовать [NSMenu menuZone], вы, вероятно, должны использовать [NSMenu menuZone].)

Однако, когда я пытаюсь вызвать любой метод экземпляра, например:

[appMainMenu addItemWithTitle:@"MyTitle" action:@selector(myaction:) keyEquivalent:@"t"];

XCode предлагает некоторые дополнения, но ни одно из них не пришло от NSMenu.

Во-первых, это Xcode, строчная буква c.

Попробуйте сохранить. Иногда XCode не понимает, что я создал переменную, пока я не сохраню файл, тем самым провоцируя его на перестройку, независимо от того, откуда идут дополнения.

0 голосов
/ 04 февраля 2010

Я начинаю с создания пустого главного меню, затем прикрепляю к нему пункты меню: -

// I am also entirely unsure about the difference between
// using AppKit directly vs the Cocoa framework
#import <cocoa/cocoa.h>

// create an empty main menu and set it as the apps main menu
[NSApp setMainMenu:[[NSMenu alloc] init]];
// The first (sub)menu of the app menu is always the app menu and is named automatically
NSMenu* appMenu = [[NSMenu alloc] initWithTitle:@""];
// Now, add an about entry
[appMenu addItemWithTitle:@"About MyApp" action:@selector(orderFrontStandardAboutPanel:) keyEquivalent:@""];

Это работает для меня.

...