프로젝트의 소스 코드를 Swift 3에서 Swift 4로 변환하려고합니다. Xcode가 알려주는 경고 중 하나는 선택기에 관한 것입니다.
예를 들어 다음과 같이 일반 선택기를 사용하여 버튼에 대상을 추가합니다.
button.addTarget(self, action: #selector(self.myAction), for: .touchUpInside)
이것이 나타내는 경고입니다.
'#selector'의 인수는 Swift 4에서 사용되지 않는 '@objc'속성 유추에 의존하는 'ViewController'의 인스턴스 메소드 'myAction ()'을 나타냅니다.
이 인스턴스 메소드를 Objective-C에 노출 시키려면 '@objc'를 추가하십시오.
이제 Fix
오류 메시지를 누르면 내 기능이 수행됩니다.
// before
func myAction() { /* ... */ }
// after
@objc func myAction() { /* ... */ }
@objc
마크 를 포함하기 위해 모든 기능의 이름을 바꾸고 싶지 않으며 필요하지 않다고 가정합니다.
지원 중단을 처리하기 위해 선택기를 다시 작성하려면 어떻게해야하나요?
관련 질문 :
@objc
? 그것은 약간 성가신 일이지만, 나는 일반적 으로이 기능을 비공개로 설정하여 @objc
어쨌든 그것을 표시해야합니다 .
@objcMembers
모든 Obj-C 호환 멤버를 Obj-C에 노출시키기 위해 주어진 클래스 를 표시하는 것이지만 실제로 전체 클래스를 노출 해야하는 경우가 아니라면 조언하지 않습니다.
@objc
이다 의 Obj-C에 노출, 따라서 선택기로 사용하기 위해 지금 필요.