无法从其他类访问@Property

时间:2012-04-17 20:30:37

标签: objective-c xcode cocoa

我无法访问程序中的某些变量。

我有一个名为MainMenu的课程。

在.h文件中,我声明了2个属性如下:

MainMenu.h:
@property (nonatomic, retain) IBOutlet NSView *mainView;
@property (nonatomic, retain) IBOutlet NSWindow *theMainWindow;

在另一个类文件中,我希望能够访问这两个变量,当前我在另一个.h类文件中使用以下代码不起作用,我不明白我做错了什么:

AppDelegate.m:
MainMenu *theMainMenu = [[MainMenu alloc] init];
[theMainMenu switchViews:theMainMenu.theMainWindow:theMainMenu.mainView];

这里我创建了一个MainMenu类的对象,并在其定义中调用一个名为'switchViews'的方法,然后我想将它传递给我无法访问的2个变量。

任何帮助非常感谢。 在此先感谢大家。

编辑:'switchViews'方法如下所示:

- (void)switchViews:(NSWindow*)mainWindow:(NSView*)newView {
    NSView *dummyView;
    [mainWindow setContentView:dummyView];
    [mainWindow setContentSize:newView.frame.size];
    [mainWindow setContentView:newView];
}

2 个答案:

答案 0 :(得分:1)

我认为问题是MainMenu类的两个不同实例之一。如果你连接了你的IBOutlets,你必须在你的MainMenu类中设置一个蓝色立方体,对吗?但是,当您在应用程序委托中分配init 1时,会创建另一个MainMenu实例,该实例没有连接到任何内容的那些属性。相反,你应该在IB中设置一个蓝色立方体给你的app委托,并在那个类中有一个IBOutlet连接到IB中的MainMenu蓝色立方体。

答案 1 :(得分:0)

这可能很愚蠢,但你还记得在Interface Builder中链接你的NSWindow和NSView吗?或者你至少手动实例化它们?

我最好的猜测是(假设某处有一个MainMenu.xib),当你调用init时,它的对象被引入但不一定被加载。您应该尝试在控制器viewDidLoadviewWillAppear方法中调用switchViews方法,以确保它已全部加载。