NSWindowController初始化警告

时间:2015-01-30 04:00:15

标签: objective-c cocoa nswindow nswindowcontroller designated-initializer

我正在开发一个基于文档的应用程序。我正在为文档窗口使用专用的窗口控制器,并调用-[NSDocument makeWindowControllers]方法。

我的窗口控制器初始化如下:

- (instancetype) init
{
    if (self = [super initWithWindowNibName:@"Document" owner:self]) {

    }

    return self;
}

此处,@"Document"是.xib文件,其中包含使用项目创建的主文档窗口。

这里的基本原理是,这个窗口控制器总是使用这种类型的窗口进行初始化,因此参数在-init的实现中都是硬编码和隐藏的(同时还方便地将窗口所有者设置为self)。

因此,实例化窗口控制器的一方(在我的情况下,文档类)不需要担心使用哪个笔尖,只需调用-init

问题是,我打破了指定的初始化链,Xcode抱怨这些警告:

  

语义问题方法覆盖指定的初始值设定项   超类'-initWithCoder:'找不到。

     

语义问题指定的初始化程序缺少对a的“超级”调用   指定超类的初始化者。

     

语义问题方法覆盖指定的初始值设定项   超类'-initWithWindow:'找不到。

     

语义问题指定的初始化程序调用了非指定的   初始化程序。

我会将呼叫切换到-initWithWindowNibName:owner:,其中一个转到-initWithWindow:(之后,我会手动设置所有者,我猜?);但我不知道如何直接从笔尖创建NSWindow(或者如果这是正确的事情)。

编辑:我刚刚发现警告只是因为我在界面中将-init标记为NS_DESIGNATED_INITIALIZER而被触发。我可以删除该标签并且警告消失,但-init 是我事实上指定的初始化程序,所以我宁愿保留它。

0 个答案:

没有答案