我在双击事件后调用以下代码,以便在鼠标位置打开一个小窗口。它工作正常,并且每次都会重新出现在新位置,但如果我先手动关闭窗口,则会收到 EXC_BAD_ACCESS 错误。
win = [[NSWindow alloc] initWithContentRect:frame
styleMask:(NSTitledWindowMask | NSClosableWindowMask)
backing: NSBackingStoreBuffered
defer:false];
[win makeKeyAndOrderFront:NSApp];
Run Code Online (Sandbox Code Playgroud)
并且窗口在调用上面代码的视图的接口中声明
@interface myView : NSView
{
NSWindow *win;
}
Run Code Online (Sandbox Code Playgroud)
如果相关的话,我正在使用 ARC,并且在调试器中我可以看到win在关闭之后以及尝试重新创建它之前它不是 nil,尽管它的 contentView 已变为 nil。
感谢您提供任何线索。
我在类标题的顶部定义了一个枚举:
enum PresetSeq{kSeqClear=0, kSeqAllBeats, kSeqAllTicks};
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用枚举声明该类的方法时.
-(void)quickSetSeq:(PresetSeq)pattern forChannel:(long)ch;
Run Code Online (Sandbox Code Playgroud)
我在"PresetSeq"之前得到错误:期望')'
如果我输入枚举枚举:
typedef enum {kSeqClear=0, kSeqAllBeats, kSeqAllTicks} PresetSeq;
Run Code Online (Sandbox Code Playgroud)
然后编译器很高兴,但我不记得在C/C++中必须这样做.
enum必须是Obj-C中的typedef吗?
谢谢
史蒂夫
PS - 我看到了关于Obj-C枚举的其他帖子,但不是为什么这个简单的案例失败了.