2016-12-22 17 views
0

Wenn ich versuche, eine neue Swift-Klasse basierend auf einem objektiven C zu erstellen;swift: Methode enthält "NSMutableArray" überschreibt nicht

Ich habe festgestellt, dass eine Methode enthält NSMutableArray nicht aufgerufen; Einige andere Override-Methoden sind in Ordnung;

Hier sind die Code-Segment von denen:

Geordnete Klasse

- (void)setMenuArray:(NSMutableArray *)array 
{ 
    NSLog(@"Default SetMenu Logic"); 
} 

Kinder Klasse

func setMenuArray(menuArray : NSMutableArray) {  
    menuArray.add("test1"); 
    menuArray.add("test2"); 
    NSLog("Override setMenuArray Logic"); 
    NSLog("%@", menuArray); 
} 

Was ist zurückkommen wird, dass die ChildClass.setMenuArray isn‘ t genannt, aber rief die ParentClass-Version:

wie folgt aus:

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 

Es ist in Ordnung für die Methode hat keine Parameter

Eine andere Sache ist, dass, wenn ich hinzufügen, versucht „überschreiben“ Präfix, es einen Compiler-Fehler zeigen „Methode Doesn 't override ... "

+0

Wie werden die Elternklasse und das Kind Klasse deklariert? Bitte zeigen Sie diesen Code an. –

Antwort

0

In Swift 3 wird die Objective-C-Methode - (void)setMenuArray:(NSMutableArray *)array als func setMenuArray(_ array: NSMutableArray!) importiert.

Sie müssen angeben, dass der erste Parameter keine Argumentbezeichnung mit _ (SE-0046) hat.

Versuchen Sie, die Methode Header Ihrer Child Klasse an sich ändernde:

override func setMenuArray(_ menuArray : NSMutableArray!) { 
Verwandte Themen