2016-12-24 3 views
0

Wie wir wissen, ermöglicht die Sprache Funktion Überladung, in Objective-c die Überladung ist nicht zulässig.Swift Overloading Problem

So teste ich in meinem Demo-Projekt:

import UIKit 

class FuncOverLoad: NSObject { 

func helloFuc (_ what:String) { 

} 
func helloFuc (_ what:Int) { 

} 


func helloFuc() -> String { 

    return "one" 

} 
func helloFuc() -> Int { 

    return 1 

} 
} 

Aber, warum der Fehler dort kommt:

Method ‘helloFuc’ with Objective-C selector ‘helloFunc:’ conflicts with previous declaration with the same Objective-C selector

Ich nehme das Bild:

enter image description here

Warum kommt das Problem, wenn Swift Funktion Überladung legal ist?

+1

Das ist ein schlechtes Duplikat für diese Frage. Ein viel besser wäre http://stackoverflow.com/questions/29457720/compiler-error-method-with-objective-c-selector-conflicts-with-previous-declara?s=1|6.5289 – rmaddy

Antwort

0

In Ihrem Fall würde das Entfernen von : NSObject die Fehler beheben.

+0

wenn Unterklasse von ' NSObject', wenn zu 'Objective-C' verwandt? – aircraft

+0

Wenn dies, die Swift's Overloading-Eigenschaft ist wenig tatsächliche Bedeutung in der Entwicklung iOS, weil die 'vc', oder' steuert' und so weiter. – aircraft

+0

Das Unterklassen 'NSObject' impliziert' @ objc', also sind Sie an die gleichen Regeln wie Ziel C gebunden – Alexander