最近在跟著斯坦福大學(xué)的ISO8開發(fā)學(xué)習(xí)下面的代碼,編譯出錯(cuò)func performOperation(operation: (Double, Double) -> Double) { if operandStack.count >= 2 { displayValue = operation(operandStack.removeLast(), operandStack.removeLast()) enter() }}func performOperation(operation: Double -> Double) { if operandStack.count >= 1 { displayValue = operation(operandStack.removeLast()) enter() }}出現(xiàn)下面的錯(cuò)誤:Method 'performOperation' with Objective-C selector 'performOperation:' conflicts with previous declaration with the same Objective-C selector
2 回答

幕布斯7119047
TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
如果你這個(gè)類沒繼承Objective-C的類,代碼不會(huì)出錯(cuò)的,顯然你這個(gè)類繼承了一個(gè)Objective-C的類,Objective-C不支持方法重載,而這兩個(gè)方法的selector是一樣的,所以就錯(cuò)了。
要么你給兩個(gè)方法起不一樣的名字,要么你想辦法讓這個(gè)類不要繼承Objective-C的類,要不你把其中一個(gè)設(shè)成private,或者你還可以把其中的一個(gè)方法加一個(gè)Objective-C不支持的參數(shù)類型比如()=()
之類的??傊褪遣灰屵@兩個(gè)方法同時(shí)和Objective-C打交道就沒問題。
話說新版的Swift應(yīng)該能編譯過去,但運(yùn)行的時(shí)候會(huì)掛。
- 2 回答
- 0 關(guān)注
- 881 瀏覽
添加回答
舉報(bào)
0/150
提交
取消