让NSWindow获得接收器类无效

时间:2012-06-06 12:22:45

标签: macos cocoa nswindow

我知道这必须是超级简单的东西,但不能为我的生活搞清楚。我不能让XCode认识到NSWindow是一个客观的c类。我有以下简单的代码:

HelloWorldAppDelegate.h

#import  <Cocoa/Cocoa.h>
#import "EAGLView_mac.h"

@interface HelloWorldAppDelegate : NSObject <NSApplicationDelegate> {
    NSWindow    *window;
    EAGLView    *glView;
}

@property (assign) IBOutlet NSWindow    *window;
@property (assign) IBOutlet EAGLView    *glView;

@end

HelloWorldAppDelegate.m

#import "HelloWorldAppDelegate.h"
#import "EAGLView_mac.h"

@implementation HelloWorldAppDelegate
@synthesize window, glView;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    NSRect frame = NSMakeRect(0, 0, 480, 320);

    window = [[NSWindow alloc] initWithContentRect: frame styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES];

    //EAGL init code cut for brevity      

    [window setContent:glView];
    [window makeKeyAndOrderFront:self];
}

@end

当我尝试编译XCode时,抱怨NSWindow是接收器类型'void'而不是objective-c类。当我输入代码时,没有任何自动完成功能弹出。我在调用NSWindow alloc时遇到一个实际错误,另外两个调用'window'的警告都抱怨窗口和/或NSWindow是一个接收器类型为void。它还抱怨找不到方法'setContent'和'makeKeyAndOrderFront'?我错过了包含在某个地方吗?

1 个答案:

答案 0 :(得分:0)

尝试将NSWindow和EAGLView出口的属性属性更改为

  • (nonatomic, retain),如果您不使用ARC
  • (weak),如果您使用ARC

The Objective-C Programming Language: Declared Properties解释了这一点并说明:

  

分配
  指定setter使用简单赋值。此属性是默认属性。   您可以将此属性用于标量类型,例如NSInteger和CGRect。

希望这有帮助。