beginSheetModalForWindow方法错误

时间:2011-10-15 17:16:52

标签: objective-c xcode macos

我无法理解为什么beginSheetModalForWindow无效。

以下是MyAppDelegate.h的内容

@interface MyAppDelegate : NSObject <NSApplicationDelegate> {
    NSWindow *window;
}

@property (assign) IBOutlet NSWindow *window;

@end

MyAppDelegate.m

@synthesize window;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{

}

@end

在我的AppController.m中,我有这些代码行

NSAlert *alert = [[[NSAlert alloc] init] autorelease];
        [alert setMessageText:@"Alert."];

        [alert beginSheetModalForWindow:window
                          modalDelegate:self
                         didEndSelector:@selector(alertDidEnd:returnCode:contextInfo:)
                            contextInfo:nil];

问题是我收到错误:使用未声明的标识符窗口。

我想念的是什么?

1 个答案:

答案 0 :(得分:0)

'window'是属于MyAppDelegate实例的变量。为了在AppController中使用相同的窗口变量,AppController需要对窗口的引用。我不确定这两个类之间的关系是什么,但通常当一个类需要提供另一个类来引用其实例变量之一时,引用将在方法调用中传递。例如,您可以将一个setWindow:方法添加到AppController,并让MyAppDelegate调用该方法,提供变量'window'