0

これは私を狂わせています、私は約1週間すべてを試しました。ある種の靴底がお役に立てば幸いです。新しいモーダルポップアップカラーピッカーを作成しようとしています。ただし、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();

しかし、何らかの理由で、これは次の呼び出しによって2番目のウィンドウを作成します。

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
4

1 に答える 1

1

これは、.NETでColorPickerオブジェクトへの参照を保持していない場合に発生する可能性があります。ガベージコレクションされ、Cocoa/objective-cシステムがメッセージを送信しようとしたときに再作成されます。

オブジェクトを閉じた後に破棄すると、私に起こります。

于 2012-07-20T00:04:42.623 に答える