NSWindowController加載遇到的幾個問題?

自定義了一個類MyWindowController,繼承自NSWindowController,在使用過程中遇到了幾個問題,記錄下:
1、一開始以爲生成MyWindowController的對象時就會加載xib文件,繼而調用windowDidLoad函數,即:
myWindowController = [[MyWindowController alloc] init];
結果沒有調用windowDidLoad函數,換成initWithWindowNibName函數初始化對象也還是不行,最後找到原因,調用:
[self.window makeKeyAndOrderFront:nil] 或是 [myWindowController showWindow:self];
這句話後,就調用了windowDidLoad函數,想着應該是顯示window時,纔會加載xib文件吧

2、假如這裏有兩行代碼

[self.window makeKeyAndOrderFront:nil];
[self test];
這裏要注意的是,執行第一行代碼時,就會調用windowDidLoad函數,直到windowDidLoad函數結束後,纔會執行第二行的代碼,順序就相當於:
— [self.window makeKeyAndOrderFront:nil];
— windowDidLoad函數
— [self test];

3、關閉window可調用Controller的close函數

4、隱藏標題欄,也就是window最上面的,最大化最小化的那一欄,隱藏後最大化最小化會移到下面
self.window.titleVisibility = NSWindowTitleHidden;
self.window.titlebarAppearsTransparent = YES;
self.window.styleMask |= NSWindowStyleMaskFullSizeContentView;

另外,手工創建的NSWindow,關閉後系統會檢查這個window有沒有controller引用它,有的話就不會釋放這個window對象。xib中創建的window則沒有這個問題。

但是對於window的釋放,系統是特殊處理的,只要關閉就釋放了。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章