Xcode完成无法识别我的变量的类型

时间:2010-02-04 08:44:25

标签: objective-c cocoa xcode macos appkit

我正在创建一个对象:

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 :(得分:0)

首先创建一个空的主菜单,然后将菜单项附加到它: -

// 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:@""];

这适合我。

答案 1 :(得分:0)

  

我正在创建一个对象:

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

您应该allocate it from [NSMenu menuZone]

(它与10.6.1中的默认区域相同,但只要文档说您应该使用[NSMenu menuZone],您可能应该使用[NSMenu menuZone]。)

  

但是,当我尝试调用任何实例方法时,例如:

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

XCode提供了一些完成,但似乎都没有来自NSMenu。

首先,它是Xcode,小写c。

尝试保存。有时Xcode没有意识到我创建了一个变量,直到我保存文件,从而激发它重建任何完成的来源。