我无法弄清楚如何在没有笔尖的情况下分配和打开一个新的NSWindow。
NSRect frame = NSMakeRect(100, 100, 200, 200);
NSUInteger styleMask = NSBorderlessWindowMask;
NSRect rect = [NSWindow contentRectForFrameRect:frame styleMask:styleMask];
NSWindow * window = [[NSWindow alloc] initWithContentRect:rect styleMask:styleMask backing: NSBackingStoreBuffered defer:false];
[window setBackgroundColor:[NSColor blueColor]];
[window makeKeyAndOrderFront: window];
答案 0 :(得分:15)
如果您正在使用ARC,那么除非您对窗口有强引用,否则它将在引用它的最后一个语句之后立即释放。
ARC改变了您需要考虑对象的方式,从保留/发布模型到所有权模型。如果没有任何东西拥有您的window
变量,它就会消失。
有几种方法可以取得窗口的所有权。您可以使用strong
关键字将窗口设置为实例变量或类中的属性,或者在代码中声明变量时可以使用__strong
限定符。
LLVM compiler site上有关于ARC的更多信息。