我知道这必须是超级简单的东西,但不能为我的生活搞清楚。我不能让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'?我错过了包含在某个地方吗?
答案 0 :(得分:0)
尝试将NSWindow和EAGLView出口的属性属性更改为
(nonatomic, retain)
,如果您不使用ARC (weak)
,如果您使用ARC The Objective-C Programming Language: Declared Properties解释了这一点并说明:
分配
指定setter使用简单赋值。此属性是默认属性。 您可以将此属性用于标量类型,例如NSInteger和CGRect。
希望这有帮助。