1

我试图从菜单栏运行我的应用程序,我在 AppDelegate.h 中添加了以下内容,但我不断收到错误“无法在 @protocol 或 @interface 中声明变量”

       @interface AppDelegate : NSObject <NSApplicationDelegate>
       {
       IBOutlet NSMenu *statusMenu;
       NSStatusItem * statusItem;
       }

有人可以帮忙吗?非常感谢安德鲁

4

2 回答 2

1

我打赌这不是你的实际代码。您收到的错误表明您忘记了实例变量周围的大括号。

顺便说一句,现在更常见的是在头文件中声明属性,如果您需要声明实际的实例变量,您可以在块开头的大括号中进行@implementation。这样,属性是公共接口的一部分,而实例变量(正确地)是实现的私有部分。

于 2013-06-21T17:21:46.523 回答
0

您应该真正将它们定义为属性

@interface AppDelegate : NSObject <NSApplicationDelegate>
@property (nonatomic, weak) IBOutlet NSMenu *statusMenu;
@property (nonatomic, strong) NSStatusItem * statusItem;

...

@end

“为什么?”,你可能会问。多种原因,但主要是因为它们确实有效,并且因为 ARC 现在知道如何管理这些变量。

于 2013-06-21T17:08:36.063 回答