swift:方法包含" NSMutableArray"不会覆盖

时间:2016-12-22 02:31:19

标签: objective-c swift

当我尝试基于目标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

这些方法没有任何参数

是好的

另一件事是当我尝试添加"覆盖"前缀,它显示编译错误"方法不覆盖..."

1 个答案:

答案 0 :(得分:0)

在Swift 3中,Objective-C方法- (void)setMenuArray:(NSMutableArray *)array导入为func setMenuArray(_ array: NSMutableArray!)

您需要指定第一个参数没有带_SE-0046)的参数标签。

尝试将子类的方法标题更改为:

override func setMenuArray(_ menuArray : NSMutableArray!) {