셀렉터(selector)는 메서드의 주소를 통해 특정 메서드를 가리키는 개념입니다. (셀렉터는 메서드를 가리키기만 할 뿐, 메서드를 실행하는 것이 아닙니다.)
셀렉터(selector)의 경우에는 Objective-C 언어의 문법이기 때문에 가리키고 싶은 함수 앞에 @objc
어트리뷰트를 작성하여 사용합니다.
셀렉터를 사용할 때는 #selector(클래스명.메서드)
형태로 작성해야 합니다.
일반 메서드와 계산속성 메서드의 경우에는 셀렉터를 사용하는 방법이 조금 다릅니다. (계산 속성의 경우에는 자세하게 작성해야 함)
✅ 셀렉터(selector)의 문법 표현
class Man{ var name: String var age: Int @objc var agePlus: Int{ // 가리키고 싶은 메서드 앞에 @objc 어트리뷰트를 작성 get{ return age + 1 } set{ age = newValue } } init(name: String, age: Int){ self.name = name self.age = age } @objc func hello(){ // 가리키고 싶은 메서드 앞에 @objc 어트리뷰트를 작성 print("안녕 내 이름은 \(self.name)") } } var kim = Man(name: "김철수", age: 25) //일반 메서드 #selector(Man.hello) // hello //계산 속성 메서드 #selector(getter: Man.agePlus) // agePlus #selector(setter: Man.agePlus) // setAgePlus:
😮 위의 코드만 보면 셀렉터(selector) 문법의 필요성을 찾을 수 없습니다. 하지만 실무에서는 셀렉터 문법을 많이 사용합니다.
Xcode에서 UI을 표현하는 방법은 크게 2가지가 있습니다.
스토리보드(Storyboard)를 사용하여 UI 기능(메서드)을 구현한 경우에는 @IBAction
에 의해 내부적으로 UI의 기능(메서드)이 자동으로 연결되었습니다.
하지만 코드(Code)를 사용하여 UI 기능(메서드)을 구현한 경우에는 @IBAction
를 사용할 수 없기 때문에 내부적으로 UI의 기능(메서드)을 가리키는 셀렉터(selector) 문법이 필요합니다.
✅ 셀렉터(selector)의 문법 사용
Button.addTarget(self, action: #selector(버튼을 누를 시 사용될 메서드), for: .touchUpInside) // .touchUpInside : 버튼 누름 이벤트