2013-11-14 62 views
0

刪除窗口,我有一個屬性:可可ARC:從內存

@property (strong, nonatomic) NSWindow *window; 

而且在我的實現,我有兩個方法,啓動和停止。

啓動函數創建像這樣(部分代碼)的新窗口:

_window = [[NSWindow alloc] initWithContentRect:screenRect 
              styleMask:NSBorderlessWindowMask 
              backing:NSBackingStoreBuffered 
               defer:NO]; 

停止功能關閉,像這樣的窗口:

[_window orderOut:self]; 
[_window close]; 
//_window = nil; 

不過,我得到一個EXC_BAD_ACCESS錯誤,當我第二次執行啓動功能(啓動,然後停止,然後重新啓動)。

這發生在NSWindow的alloc語句中。

我需要做些什麼來確保新窗口被正確創建?

編輯:一些更多的測試後,它出現在錯誤無關與ALLOC初始化呼叫。如果我在此之前,添加以下行:

NSLog(@"%@", _window); 

在第一個電話開始,這將導致輸出「空」,則調用後停止()和新的呼叫開始,我會得到NSLog行上出現EXC_BAD_ACCESS錯誤。

即使只是設置_window =零;在停止方法中(調用[_window close];之後)會導致訪問錯誤。

+0

沒有回溯,沒有人可以幫你。當然不是沒有更多的上下文。 – bbum

回答

0

這很奇怪,你分配一個對象時,得到一個EXC_BAD_ACCESS,檢查錯誤是在screenRect

+0

謝謝,我做了一些更多的測試,請看我更新的問題(底部)。它似乎不是一個問題與分配。 – Wesley