-1

我已遵循本指南

虽然我真的无法理解它在第 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);

也许窗口没有正确初始化?

4

1 回答 1

1

您可能会出现段错误,因为 OpenGL 尝试在没有当前上下文的情况下更改当前上下文中的某些状态(因为您在-drawRect:没有先设置当前上下文的情况下发送了)。

你永远不应该发送-drawRect:自己。相反,使用-setNeedsDisplay并让 Cocoa 设置当前上下文并-drawRect:为您发送:

- (void)awakeFromNib {
  self.needsDisplay = YES;
}
于 2012-04-09T18:00:49.803 回答