2012-02-29 68 views
1

我已經安裝了最新的XCode 4+,並且自從我收到警告消息'窗口'已被棄用。 我已經子類NSView並將其稱爲CentralView並用它來動態加載各種視圖。我不得不繼承NSView,因爲我需要重寫的方法。 在其他類加載控件我已經創建了下面的方法中央的意見:NSView'窗口'已棄用XCode 4

- (IBAction)showUserInfoView:(id)sender{ 
    NSLog(@"Load new user info page"); 
    // Try to end editing 
    NSWindow *w = [centralView window]; // Here I get warning 'window' is deprecated 
    BOOL ended = [w makeFirstResponder:w]; 
    if (!ended) { 
     NSBeep(); 
     return; 
    } 
    // Put the view in the box 
    NSView *v = [[viewControllers objectAtIndex:0] view]; 
    NSArray* viewSet = [NSArray arrayWithObject: v]; 
    [centralView setSubviews: viewSet]; 

}

據我所知在一個NSView窗口方法是最新的。爲什麼我會收到消息?

回答

1

什麼類型是centralView?如果你說[(NSView*)centralView window]會發生什麼?

編譯器可能沒有找到-[NSView window],但有些其他-window方法已被棄用。如果centralView被聲明爲id那麼編譯器不知道它是NSView並且必須猜測。

+0

This; - [NSView窗口]絕對不會被棄用。 – Wevah 2012-02-29 06:18:21

+0

Casting centralView解決了這個問題,但我真的不知道爲什麼我應該這樣做。 NSView子類只有一個centralView實例,並且在其他地方沒有其他稱爲「窗口」的方法。順便說一句,我永遠不會爲自己創造一種叫做「窗口」的方法。 – sumofighter666 2012-02-29 06:32:52

+0

順便說一句centralView沒有被聲明爲'id'。它被聲明爲NSView的CentralView子類 – sumofighter666 2012-02-29 06:34:57