2 年前的代码现在不起作用(WindowController 分配)
2 years old code do not work now(WindowController alloc)
以下代码在 2 年前有效
今天我尝试重建
AppDelegate.h
#import <Cocoa/Cocoa.h>
#include <stdio.h>
#include <CoreServices/CoreServices.h>
#include <Carbon/Carbon.h>
@class EnterWindowController;
@interface AppDelegate : NSObject <NSApplicationDelegate> {
NSWindow *window;
EnterWindowController *vEnterWindowController;
}
@property (retain,nonatomic) EnterWindowController *vEnterWindowController;
@end
AppDelegate.m
#import "AppDelegate.h"
#include <stdio.h>
#include <CoreServices/CoreServices.h>
#include <Carbon/Carbon.h>
#include <CoreFoundation/CoreFoundation.h>
#include <IOKit/IOKitLib.h>
#import "EnterWindowController.h"
@implementation AppDelegate;
@synthesize vEnterWindowController;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
if(!vEnterWindowController)
{
vEnterWindowController=[[EnterWindowController alloc] init];
}
[vEnterWindowController showWindow:self];//point A
}
EnterWindowController相关的enterwidow不显示,
我将断点设置在A处,发现vEnterWindowController为nil,
看起来像
vEnterWindowController=[[EnterWindowController alloc] init];
不起作用,总是 returns 零。
欢迎您的评论
此语法适用于我使用 Xcode 6.1:
if (!vEnterWindowController)
{
vEnterWindowController = [[EnterWindowController alloc] initWithWindowNibName:@"yourWindowNibName"];
}
[vEnterWindowController showWindow:self];
顺便说一句,您也可以在 .h 文件中使用
#import <Foundation/Foundation.h>
#import <Cocoa/Cocoa.h>
#import <AppKit/AppKit.h>
@interface AppDelegate : NSObject <NSApplicationDelegate, , NSWindowDelegate> {
@public
EnterWindowController *vEnterWindowController;
}
@property (assign) IBOutlet NSWindow *window;
而且您不需要合成 vEnterWindowController
。您也不需要在 .m
文件中合成 window。
将 NSWindowDelegate
协议添加到 AppDelegate
还可以方便地接收有关主要 window.
的通知
以下代码在 2 年前有效
今天我尝试重建
AppDelegate.h
#import <Cocoa/Cocoa.h>
#include <stdio.h>
#include <CoreServices/CoreServices.h>
#include <Carbon/Carbon.h>
@class EnterWindowController;
@interface AppDelegate : NSObject <NSApplicationDelegate> {
NSWindow *window;
EnterWindowController *vEnterWindowController;
}
@property (retain,nonatomic) EnterWindowController *vEnterWindowController;
@end
AppDelegate.m
#import "AppDelegate.h"
#include <stdio.h>
#include <CoreServices/CoreServices.h>
#include <Carbon/Carbon.h>
#include <CoreFoundation/CoreFoundation.h>
#include <IOKit/IOKitLib.h>
#import "EnterWindowController.h"
@implementation AppDelegate;
@synthesize vEnterWindowController;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
if(!vEnterWindowController)
{
vEnterWindowController=[[EnterWindowController alloc] init];
}
[vEnterWindowController showWindow:self];//point A
}
EnterWindowController相关的enterwidow不显示, 我将断点设置在A处,发现vEnterWindowController为nil, 看起来像
vEnterWindowController=[[EnterWindowController alloc] init];
不起作用,总是 returns 零。
欢迎您的评论
此语法适用于我使用 Xcode 6.1:
if (!vEnterWindowController)
{
vEnterWindowController = [[EnterWindowController alloc] initWithWindowNibName:@"yourWindowNibName"];
}
[vEnterWindowController showWindow:self];
顺便说一句,您也可以在 .h 文件中使用
#import <Foundation/Foundation.h>
#import <Cocoa/Cocoa.h>
#import <AppKit/AppKit.h>
@interface AppDelegate : NSObject <NSApplicationDelegate, , NSWindowDelegate> {
@public
EnterWindowController *vEnterWindowController;
}
@property (assign) IBOutlet NSWindow *window;
而且您不需要合成 vEnterWindowController
。您也不需要在 .m
文件中合成 window。
将 NSWindowDelegate
协议添加到 AppDelegate
还可以方便地接收有关主要 window.