在 Objective C 中,自定义的 init 方法必须调用超类的指定初始化程序。考虑以下用于 NSView 子类的自定义 init 方法:
- (void)initWithFrame:(CGRect)aFrame andName:(NSString *)aName {
if(self = [super initWithFrame:aFrame]){
//set up object
}
}
然而,MacRuby 只提供了super
关键字,它只是尝试在超类中调用相同的方法。然而,由于这是一个自定义初始化程序,超类没有这样的方法。
解决这个问题的标准方法是什么?我确实看到了这个问题:MacRuby custom initializers但我不能说我非常了解答案,它似乎也不是一些被广泛接受的解决方案。由于 MacRuby 现在比那篇文章写的时候早了几年,我希望现在有一个更清晰、标准的解决方案。