这让我疯了,我已经尝试了大约一个星期。希望某种鞋底可以提供帮助。我正在尝试创建一个新的模态弹出颜色选择器。但是,StopModal()
会不断创建新窗口。
我以编程方式创建了一个新的NSWindow
:
class ColorPicker:NSWindow{
void ColorPicker(IntPtr Value):base(Value){
}
void ColorPicker(Color StartColor){
//Set up window here.
}
public void ShowModal(NSWindow NewParent){
this.ParentWindow = NewParent;
NSApplication.SharedApplication.RunModalForWindow(this);
return DialogResult;
}
}
我这样创作:
ColorPicker CP=new ColorPicker(Color.Red);
然后显示
CP.ShowDialog(MyMainWindow);
我在表单上有一个关闭它的按钮并调用
NSApplication.SharedApplication.StopModal();
但由于某种原因,这会通过调用:
创建第二个窗口void ColorPicker(IntPtr Value):base(Value){
}
然后我收到泄漏错误,很快崩溃了:
NativeRelease ERROR]: type: ColorPicker handle: 137041376 count: 2 gchandle: 0
objc[350]: Object 0x103070 of class NSConcreteMapTable autoreleased with no pool in place - just leaking - break on objc_autoreleaseNoPool() to debug
答案 0 :(得分:1)
如果您没有在.NET中保留对ColorPicker对象的引用,则可能会发生这种情况。它将被垃圾收集,然后在Cocoa / objective-c系统尝试向其发送消息时重新创建。
当我关闭对象后处理它时发生在我身上。