내 단추를 만들고 대상 동작을 추가하는 ButtonProvider
클래스가 있습니다. 그러나 단추를 누를 때 해당 단추를 만든 클래스 ButtonProvider
에서 함수를 호출하는 대신 다른 클래스의 같은 이름 가진 함수를 호출합니다. 잘못된 클래스에서 UIButton 함수가 호출됩니다.
class ButtonProvider {
let view: UIView!
let button: UIButton!
init(view: UIView) {
self.view = view
}
func showButton() {
button = UIButton(frame: CGRect(x: 0, y: 0, width: 50, height: 50))
button.backgroundColor = .white
button.addTarget(self, action: #selector(ButtonProvider.close), for: .touchUpInside)
view.addSubview(button)
}
@objc func close() {
button.removeFromSuperview()
}
}
그리고 나의 ViewController
전화에
override func viewDidLoad() {
let buttonProvider = ButtonProvider(view: self.view)
buttonProvider.showButton()
}
@objc func close() {
//This is the function that is called
}
ButtonProvider.close의 선택 내 ViewController.close 함수를 호출하는 이유가 뭘까요?
'buttonProvider'는 유지되지 않으므로 할당이 해제됩니다. 나는 응용 프로그램이 충돌하지 않는 것에 놀랐다. – Sulthan
#selector (닫기) 대신 #selector (ButtonProvider.close)를 사용하는 이유는 무엇입니까? –
@DmytroShvecov 동일합니다. – Sulthan