Objective c 从另一个类调用NSMenu时,NSMenu为null

Objective c 从另一个类调用NSMenu时,NSMenu为null,objective-c,xcode,nslog,nsmenu,appdelegate,Objective C,Xcode,Nslog,Nsmenu,Appdelegate,我有一个状态栏应用程序的NSMenu,在AppDelegate.h中定义如下: IBOutlet NSMenu *spotMenu; @property (nonatomic, retain) IBOutlet NSMenu *spotMenu; [spotApp setMenu: spotMenu]; - (NSMenu *) spotMenu { return spotMenu; } NSLog(@"%@", spotMenu); 在AppDelegate.m中,我喜欢这样:

我有一个状态栏应用程序的NSMenu,在AppDelegate.h中定义如下:

IBOutlet NSMenu *spotMenu; 

@property (nonatomic, retain) IBOutlet NSMenu *spotMenu;
[spotApp setMenu: spotMenu];


- (NSMenu *) spotMenu
{
return spotMenu;

}
NSLog(@"%@", spotMenu);
在AppDelegate.m中,我喜欢这样:

IBOutlet NSMenu *spotMenu; 

@property (nonatomic, retain) IBOutlet NSMenu *spotMenu;
[spotApp setMenu: spotMenu];


- (NSMenu *) spotMenu
{
return spotMenu;

}
NSLog(@"%@", spotMenu);
我正在尝试从另一个类访问它,如下所示:

IBOutlet NSMenu *spotMenu; 

@property (nonatomic, retain) IBOutlet NSMenu *spotMenu;
[spotApp setMenu: spotMenu];


- (NSMenu *) spotMenu
{
return spotMenu;

}
NSLog(@"%@", spotMenu);
另一类

@class AppDelegate;

AppDelegate *appD;
另一个班级

#import "AppDelegate.h"

NSLog(@"%@", [appD spotMenu]);
它返回null

2012-09-23 10:23:37.543 Spot[581:303] (null)
当我在AppDelegate类中执行相同操作时,如下所示:

IBOutlet NSMenu *spotMenu; 

@property (nonatomic, retain) IBOutlet NSMenu *spotMenu;
[spotApp setMenu: spotMenu];


- (NSMenu *) spotMenu
{
return spotMenu;

}
NSLog(@"%@", spotMenu);
它返回正确的内容:

2012-09-23 10:56:05.460 Spot[679:303] <NSMenu: 0x100618030>
Title: 
Supermenu: 0x0 (None), autoenable: YES
Items:     (
    "<NSMenuItem: 0x100618170 About Spot>",
    "<NSMenuItem: 0x10011b9b0 Preferences>",
    "<NSMenuItem: 0x1001b9390 >",
    "<NSMenuItem: 0x1001bbe70 >",
    "<NSMenuItem: 0x1001b99a0 Quit Spot>"
)
2012-09-2310:56:05.460点[679:303]
标题:
超级菜单:0x0(无),自动启用:是
项目:(
"",
"",
"",
"",
""
)
我可以从另一个类获得与AppDelagate类相同的输出吗


谢谢。

要访问您的应用程序代理,您应该执行以下操作:

AppDelegate* appD = (AppDelegate *)[[NSApplication sharedApplication] delegate];


然后您可以从appD.spotMenu中引用您的NSMenu

是,现在接受,谢谢,它说我可以在3分钟内接受答案:)