在monomac建立一个NSWindow

时间:2012-07-19 20:35:22

标签: nswindow monomac

这让我疯了,我已经尝试了大约一个星期。希望某种鞋底可以提供帮助。我正在尝试创建一个新的模态弹出颜色选择器。但是,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

1 个答案:

答案 0 :(得分:1)

如果您没有在.NET中保留对ColorPicker对象的引用,则可能会发生这种情况。它将被垃圾收集,然后在Cocoa / objective-c系统尝试向其发送消息时重新创建。

当我关闭对象后处理它时发生在我身上。