您可能应该执行类似于以下的操作,这会创建对您创建的实例的strong
引用:NSWindowController
。H:
@class MDWindowController;
@interface MDAppDelegate : NSObject <NSApplicationDelegate> {
__weak IBOutlet NSWindow *window;
MDWindowController *windowController;
}
@property (weak) IBOutlet NSWindow *window;
@property (strong) MDWindowController *windowController;
- (IBAction)showSecondWindow:(id)sender;
@end
米:
#import "MDAppDelegate.h"
#import "MDWindowController.h"
@implementation MDAppDelegate
@synthesize window;
@synthesize windowController;
- (IBAction)showSecondWindow:(id)sender {
if (windowController == nil) windowController =
[[MDWindowController alloc] init];
[windowController showWindow:nil];
}
@end
请注意,您可以只使用' 的内置方法,而不是将makeKeyAndOrderFront:
方法直接发送到NSWindowController
's 。NSWindow
NSWindowController
showWindow:
虽然上面的代码(和下面的示例项目)使用 的自定义子类NSWindowController
,但您也使用泛型NSWindowController
并使用创建实例initWithWindowNibName:
(只需确保将 nib 文件的 File's Owner 设置为NSWindowController
而不是自定义子类,如MDWindowController
)。
示例项目:
http://www.markdouma.com/developer/MDWindowController.zip