2012-02-29 55 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