【问题标题】:Xcode completion doesn't recognize the type of my variableXcode 完成无法识别我的变量的类型
【发布时间】:2010-02-04 08:44:24
【问题描述】:

我正在创建一个对象:

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 对象,即使它显然是有效的。

我遗漏了什么明显的东西?

【问题讨论】:

    标签: objective-c cocoa xcode macos appkit


    【解决方案1】:

    我正在创建一个对象:

    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 直到我保存文件才意识到我已经创建了一个变量,从而促使它重新构建完成来自的任何内容。

    【讨论】:

    • 底线是 Xcode 的自动完成功能有点不稳定。我会经常使用从不自动完成的方法,无论我输入多少它们......但是一旦我击中最后一个字符,它们就会变成蓝色。 Xcode 试图将其播放出来,就好像它一直都知道你要输入什么。
    【解决方案2】:

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

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

    这对我有用。

    【讨论】:

    • AppKit 是 Cocoa 的一部分,您应该在前缀标头中导入系统框架标头(至少是您在各处使用的标头),就像 Xcode 项目模板为您所做的那样。此外,这并没有回答问题,即 Xcode 在使用 NSMenu * 变量时不提供 NSMenu 实例方法完成。
    • 嗯,我不知道。关键是,当我实例化我的菜单时,方法完成似乎工作得很好。也许替代语法就是让 XCode 正确解析代码所需的全部内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    相关资源
    最近更新 更多