본문 바로가기
PROGRAMMING CODE/SWIFT

[UIkit] selector, 함수 전달할 때 @objc를 붙이는 이유

by daye_ 2023. 11. 20.

 

selector: 셀렉터
objective-c에서 이름을 참조하는 타입이며,
swift에서는 objective-c의 selector를 selector 구조체로 나타낸다.

 

@objc는 왜 사용하나?
swift 코드에 붙여주면
objective-c에서 그 코드를 인식할 수 있도록 해줌
(그냥 사용하면 인식 불가)

 

 

보통 다음과 같이 addTarget을 쓸 때 selector, @objc를 사용한다.

private lazy var button2: UIButton = {
	let button = UIButton()
	button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)
    	return button
}

@objc func buttonTapped() { ... }

 

 

 

위에서 봤던 개념에 따르면 selectorobjective-c의 타입이기 때문에, swift의 함수를 selector에게 알려주려면

@objc를 붙여야 objective-c의 selectorswift함수를 인식할 수 있기 때문에 붙여주는것