And*_*w M 1 macos cocoa objective-c
我将此代码设置为在我的应用启动时运行:
NSRect rect = NSMakeRect(0, 0, 200, 50); //The location of the window
NSWindow *win = [[NSWindow alloc] initWithContentRect:rect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO];
[win setOpaque:NO];
[win setLevel:NSFloatingWindowLevel];
//[win setBackgroundColor:[NSColor clearColor]];
//or
NSView *myView = [[NSView alloc] initWithFrame: NSMakeRect(0, 0, 200, 50)];
NSButton *myButton = [[NSButton alloc] initWithFrame:NSMakeRect(10, 5, 180, 40)];
[myView addSubview: myButton];
[win setHidesOnDeactivate:NO];
[win setContentView: myView];
[win orderFront: nil];
Run Code Online (Sandbox Code Playgroud)
它按预期工作(在屏幕的左下角显示一个按钮)大约一秒钟,然后消失.为什么它会消失?内存管理或其他什么,我该如何解决?
首先,在不使用Interface Builder的情况下构建用户界面是非常奇怪的.可以做到并且有一些理由这样做,但它们相当少而且相差甚远.
接下来,该代码本身并不足以说明出了什么问题.以编程方式创建UI会引发一系列问题; gc与否?...你的运行循环是如何配置的?...你有一个正确配置的应用程序包装器吗?
正如Abizem所说,最明显的猜测是你已经启用了GC并且你没有直接或间接地在某个地方的某个全局变量中植入窗口.它在标准的Cocoa应用程序中"正常工作",因为NSWindow实例是通过Cocoa应用程序基础结构(特别是Windows菜单)生根的.
| 归档时间: |
|
| 查看次数: |
920 次 |
| 最近记录: |