代码之家  ›  专栏  ›  技术社区  ›  wadesworld

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

  •  0
  • wadesworld  · 技术社区  · 14 年前

    我正在创建一个对象:

    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 回复  |  直到 14 年前
        1
  •  0
  •   Peter Hosey    14 年前

    我正在创建一个对象:

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

    你应该 allocate it from [NSMenu menuZone] .

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

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

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

    Xcode提供了一些补充,但没有一个来自nsmenu。

    首先,它是xcode,小写c。

    尝试保存。有时候,Xcode在保存文件之前并没有意识到我已经创建了一个变量,从而激发它重新生成完成的内容。

        2
  •  0
  •   Chris Becke    14 年前

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

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

    这对我有用。