我有一个状态栏应用程序的NSMenu,在AppDelegate.h中定义如下:
IBOutlet NSMenu *spotMenu;
@property (nonatomic, retain) IBOutlet NSMenu *spotMenu;
在AppDelegate.m中就像这样:
[spotApp setMenu: spotMenu];
- (NSMenu *) spotMenu
{
return spotMenu;
}
我正试图从另一个类中访问它:
AnotherClass.h
@class AppDelegate;
AppDelegate *appD;
AnotherClass.m
#import "AppDelegate.h"
NSLog(@"%@", [appD spotMenu]);
返回null。
2012-09-23 10:23:37.543 Spot[581:303] (null)
当我在AppDelegate类中执行相同操作时:
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>"
)
我可以从AppDelagate类获得与另一个类相同的输出吗?
谢谢。
答案 0 :(得分:0)
要访问您的App Delegate,您应该这样做:
AppDelegate* appD = (AppDelegate *)[[NSApplication sharedApplication] delegate];
或
AppDelegate* appD = (AppDelegate *)[NSApp delegate];
然后你可以从appD.spotMenu
中引用你的NSMenu