首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可可- awakeFromNib不是

可可- awakeFromNib不是
EN

Stack Overflow用户
提问于 2012-09-27 20:06:41
回答 1查看 2.5K关注 0票数 1

我有一个MainMenu.xib,AppController是它的文件所有者。我添加了-(void)awakeFromNib方法,效果很好。现在,沿路的几轮固定设备都不再被叫awakeFromNib了,我不知道为什么。它拥有xib,所以当它未存档时应该调用它。到底怎么回事?

编辑:

我把awakeFromNib重命名为something,并从init.起作用了。awakeFromNib为什么不这么做仍然很困惑。我在里面也有一个+(void) initialize方法,会不会搞砸了?

代码语言:javascript
复制
- (id)init {
    self = [super init];
    if (self) {
        [self something];
    }
    return self;
}


-(void)something {
    NSLog(@"yup");
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-27 20:30:36

只需在nib中设置文件所有者的类名,就可以告诉Xcode哪些对象的出口和操作显示给您,这样您就可以连接起来了。当应用程序运行并加载nib时,它不会影响文件的所有者是什么对象。

MainMenu nib的文件所有者始终是应用程序对象,无论您在Xcode的检查器中为FO设置了什么类名。将其设置为任何类名,但NSApplication1是错误的。

当您运行应用程序时,您应该在控制台中找到有关您试图连接的AppController的任何插座或操作的错误消息。它们无法连接,因为应用程序对象没有它们。

在nib编辑器中更改类名,并将AppController创建为MainMenu nib中的自定义对象。

我把awakeFromNib重命名为something,并从init.起作用了。

这意味着init正在被调用,这意味着您要调用它。这是在nib中创建它的有效选择,但是如果它不在nib或拥有awakeFromNib中,则不应该覆盖它。

您的选择是:继续使用allocinit创建该代码,或者删除该代码并在MainMenu nib中创建它。

1:或者,如果您已经子类NSApplication并将应用程序包的主体类更改为该子类,则该子类的名称。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12629241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档