我已关注this guide。
虽然我真的没有理解它在第13点所说的内容,但我只是打开了检查员的窗格,但它没有说出要设置的属性。 但是,我已经在适当的类中复制并粘贴了代码。 但它看起来是一个普通的窗口,没有三角形绘制,就像我在Objective-C中创建一个有空窗口的普通程序一样。
编辑:
我认为问题是窗口的初始化,所以我编写了一个awakeFromNib方法来使drawRect方法启动:
- (void) awakeFromNib
{
NSRect rect=NSMakeRect(100.0, 100.0, 100.0, 100.0);
[self drawRect: rect];
}
但是在drawRect的第一条指令中,我得到了一个EXC_BAD_ACCESS异常
glClearColor(0, 0, 0, 0);
也许窗口没有正确初始化?
答案 0 :(得分:1)
你可能是segfaulting,因为当没有当前上下文时,OpenGL会尝试更改当前上下文中的某些状态(因为你在没有先设置当前上下文的情况下发送了-drawRect:
)。
您不应该自己发送-drawRect:
。而是使用-setNeedsDisplay
并让Cocoa设置当前上下文并为您发送-drawRect:
:
- (void)awakeFromNib {
self.needsDisplay = YES;
}