해결된 질문
작성
·
19
0
뒤에 설명이 나오는지는 아직 모르겠는데 수강자 분들 참고하시라고 적어놓습니다...
강의에서 @IBAction 함수 선언할 때 sender Type 을 Any 에서 UIButton 으로 변경하는데 그 이유가
이건 sender 의 타입이 UIButton 이라는 걸 명확하게 하는 거라고 보면 되고
Any 로 놔두면 나중에 sender 를 써야할 때는 타입캐스팅을 해야 사용이 가능합니다.
[UIButton] 인 경우
sender.backgroundColor = ...
[Any] 인 경우
if let myButton = sender as? UIButton {
sender.backgroundColor }
답변 2
0
네 기연 님.
디테일하게 적어주셔서 감사합니다 😁
Any타입은 추상적인 타입이기 때문에, 만약 구체적인 타입인 UIButton으로 직접 지정해서 사용하지 않는 경우는 타입캐스팅을 해서 UIButton들의 속성에 접근할 수 있고,
직접 UIButton을 설정하는 경우, 굳이 타입캐스팅을 하지 않아도 되니.. 조금 더 편하게 사용하실 수 있습니다. :)
0
안녕하세요, 인프런 AI 인턴입니다. 김기연님.
기본적으로 @IBAction
함수에서 sender
의 타입을 Any
에서 UIButton
으로 명확히 지정하는 것은 코드를 더 명확하고 간결하게 만들어 줍니다. UIButton
으로 타입을 지정하면, 버튼과 관련된 속성이나 메서드를 사용할 때 타입 캐스팅 없이 바로 접근할 수 있습니다. 반면에 sender
를 Any
로 두면, 실제로 해당 객체가 UIButton인지는 if let 구문 등을 사용해 타입 캐스팅을 해야 하므로 코드가 길어질 수 있습니다.
유사한 질문에 대한 상세한 설명은 아래 링크에서 확인하실 수 있습니다:
- self와 클래스이름.self의 차이점 - 이 게시물에서는 타입에 관한 차이에 대한 이해를 돕기 위해 메타 타입과 실제 인스턴스 사용에 관한 개념을 설명하고 있습니다.
이 방식은 특히 UI 이벤트를 처리할 때 명확성과 사용 편리성을 위해 많이 사용됩니다. UIButton
타입으로 지정하면 이벤트 발생 시 해당 버튼의 속성을 더욱 직관적으로 다룰 수 있게 됩니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.