当我尝试基于目标C创建一个新的Swift类时;
我发现一个包含NSMutableArray的方法没有被调用;一些其他覆盖方法是可以的;
以下是这些代码段:
父类
- (void)setMenuArray:(NSMutableArray *)array
{
NSLog(@"Default SetMenu Logic");
}
儿童班
func setMenuArray(menuArray : NSMutableArray) {
menuArray.add("test1");
menuArray.add("test2");
NSLog("Override setMenuArray Logic");
NSLog("%@", menuArray);
}
回来的是,ChildClass.setMenuArray未被调用,但称为ParentClass版本:
像这样:2016-12-22 10:22:08.941 Taped[9787:410028] Before SetMenu
2016-12-22 10:22:08.941 Taped[9787:410028] Default SetMenu Logic
2016-12-22 10:22:08.942 Taped[9787:410028] getMenuArray: called
2016-12-22 10:22:08.943 Taped[9787:410028] After SetMenu
这些方法没有任何参数
是好的另一件事是当我尝试添加"覆盖"前缀,它显示编译错误"方法不覆盖..."
答案 0 :(得分:0)
在Swift 3中,Objective-C方法- (void)setMenuArray:(NSMutableArray *)array
导入为func setMenuArray(_ array: NSMutableArray!)
。
您需要指定第一个参数没有带_
(SE-0046)的参数标签。
尝试将子类的方法标题更改为:
override func setMenuArray(_ menuArray : NSMutableArray!) {