2016-12-02 3 views
2

에 변환 함수에 나는 에 스위프트 2 기능을 가지고 :이상한 문제 스위프트 3

public override func drawRect(rect: CGRect) 

와 엑스 코드는 스위프트 3로 변환 제안했다. 나는 그것을 변환하는 빨간 점을 누르면, 그것은으로 변환 :

open override func draw(_ rect: CGRect) { 

하지만, 지금은 나에게 다음 오류 제공 :

Invalid redeclaration of 'draw' 

어떻게 제대로은 스위프트 3으로 변환 할 수 있습니까?

override func draw(_ rect: CGRect) 

그것은

+1

전역 함수 또는 형식의 메서드입니까? 또한 컴파일러가 무엇을 말하고 이미 동일한 유형의 다른 함수가 'draw (_ :)'라는 형식 시그니처가 있는지 확인했습니다. –

+0

@DanielHall 클래스의 내부 메소드입니다. 아니 다른 무승부 (_ :) 컴파일러는 내가 여기 게시 한 기능을 보여줍니다. –

+0

@Mighty Codder, 내 솔루션이 제대로 작동하는지 확인해 주시겠습니까? UIView에서 상속받은 클래스의 메서드를 재정의하려고하는 것 같습니까? – lmiguelvargasf

답변

0

스위프트 3.이 코드 (당신) 작동 :

+0

@shalloThought,'open'을 사용하는 목적은 무엇입니까? 이 경우에는 – lmiguelvargasf

+0

'open'이 필요하지 않습니다. 나는 단지 원래 게시 된 코드가 작동한다고 말하고 싶었습니다. 이 답변에서 '공개'액세스 수준에 대해 자세히 알아보십시오. http://stackoverflow.com/a/40633441/1457385 – shallowThought

0

는 클래스가 UIView입니다 가정, 당신의 방법 서명 만해야한다고 생각

class MyView: UIView { 
    open override func draw(_ rect: CGRect) { 
     // 
    } 
} 

여기에서 잘 컴파일하십시오.

클래스 내에 draw()의 구현이 이미있는 것 같습니다.

기타 파생 데이터 정리, 삭제 및 삭제

0

엑스 코드가 제대로 작동

open override func draw(_ rect: CGRect) 

난 당신이 이전에 그 이름과 기능을 가지고 생각을 변환 엑스 코드가의 drawRect을 펼친 당신은 지금 같은 이름을 가진 두 가지 기능을 가지고있다. 나는 나 자신에 의해 그것을 시도하고 위와 같은 draw 함수 선언은 오류를주지 않는다. 그러나 그러한 함수를 2 번 선언하면 정확하게 동일한 오류가 발생합니다.