我有一个MainMenu.xib,AppController是它的文件所有者。我添加了-(void)awakeFromNib方法,效果很好。现在,沿路的几轮固定设备都不再被叫awakeFromNib了,我不知道为什么。它拥有xib,所以当它未存档时应该调用它。到底怎么回事?
编辑:
我把awakeFromNib重命名为something,并从init.起作用了。awakeFromNib为什么不这么做仍然很困惑。我在里面也有一个+(void) initialize方法,会不会搞砸了?
- (id)init {
self = [super init];
if (self) {
[self something];
}
return self;
}
-(void)something {
NSLog(@"yup");
}发布于 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中,则不应该覆盖它。
您的选择是:继续使用alloc和init创建该代码,或者删除该代码并在MainMenu nib中创建它。
1:或者,如果您已经子类NSApplication并将应用程序包的主体类更改为该子类,则该子类的名称。
https://stackoverflow.com/questions/12629241
复制相似问题