你應該做很可能類似於以下,這將創建一個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
.M:
#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
的NSWindow
,而是將y您可以使用NSWindowController
的內置showWindow:
方法。
雖然上面的代碼(以下示例項目)使用的NSWindowController
自定義子類,你也可以使用一個通用的NSWindowController
,並使用initWithWindowNibName:
實例(只需確保筆尖文件的文件的所有者設置爲NSWindowController
,而不是像MDWindowController
這樣的自定義子類)。
示例項目:
http://www.markdouma.com/developer/MDWindowController.zip