私の目標は、NSWindowを別のNSWindowに対して相対的に配置し、親がドラッグされたときに子がそれに沿って移動するようにすることです。
デバッガーを調べてみると、NSWindowの親子関係が正しく確立されます。ただし、コードの後半では、親を取得しようとすると、同じNSWindowがnilを返します。 removeChildWindowを明示的に呼び出すだけで、ペアレント化が正しく設定されるようになります。 NSWindowが親子関係を失う他の方法はありますか?
someFunction(NSWindow* parentWindow) {
NSWindow* wnd = [[NSWindow alloc] initWithContentRect:frame
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO];
[parentWindow addChildWindow:wnd ordered:NSWindowAbove];
}
後で:
anotherFunction(NSWindow* window) {
NSWindow* parentWindow = [window parentWindow]; // debugger shows nil
}
回答:
回答№1は0ウィンドウの可視性をfalseに変更する呼び出しがあったようです。
[wnd setIsVisible:false];
そして、その親を再度読み込もうとすると、結局はゼロになります。誰がそれを推測しただろう、これは文書化されていないようだ。