无法访问其他类的@Property
问题描述:
我无法访问我的程序中的某些变量。无法访问其他类的@Property
我有一个叫MainMenu的类。
在我宣布2个性能如下.h文件:
MainMenu.h:
@property (nonatomic, retain) IBOutlet NSView *mainView;
@property (nonatomic, retain) IBOutlet NSWindow *theMainWindow;
在另一类文件,我希望能够访问这些2个变量,目前我使用下面的代码中的其他不工作的.h类文件,我不明白我在做什么错:
AppDelegate.m:
MainMenu *theMainMenu = [[MainMenu alloc] init];
[theMainMenu switchViews:theMainMenu.theMainWindow:theMainMenu.mainView];
在这里,我创建的MainMenu类的一个对象,并调用一个名为“switchViews”在其定义的方法,然后我想传递给我两个我无法访问的变量。
任何帮助非常感谢。 在此先感谢大家。
编辑:如下图所示 'switchViews' 的方法:
- (void)switchViews:(NSWindow*)mainWindow:(NSView*)newView {
NSView *dummyView;
[mainWindow setContentView:dummyView];
[mainWindow setContentSize:newView.frame.size];
[mainWindow setContentView:newView];
}
答
我认为这个问题是MainMenu类的两个不同实例之一。如果你连接了你的IBOutlets,你必须在你的MainMenu类中有一个蓝色立方体集,对吗?但是,当您在应用程序委托中分配init之后,会创建MainMenu的另一个实例,该实例不具有与任何内容相关的属性。相反,您还应该将IB中的蓝色立方体设置为您的应用程序委托,并在该类中有一个IBOutlet,用于连接IB中的MainMenu蓝色立方体。
答
这可能是愚蠢的,但你记得链接您的NSWindow和一个NSView在Interface Builder?或者你是否至少手动实例化它们?
我最好的猜测是(假设有一个MainMenu.xib的地方),当你调用init
时,它的对象是inited但不一定是加载的。您应该尝试在您的控制器viewDidLoad
或viewWillAppear
方法中调用您的switchViews方法,以确保它已全部加载。
您用于调用switchViews的语法不正确。 switchViews如何声明? – UIAdam 2012-04-17 20:32:27
我已将方法添加到我的帖子中 – Cristian 2012-04-17 20:33:28
你是什么意思的“它不工作”?编译错误?运行时错误? – mprivat 2012-04-17 20:35:59