Inflearn brand logo image

인프런 커뮤니티 질문&답변

김기연님의 프로필 이미지
김기연

작성한 질문수

앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지

(기초-1) 첫번째 앱 만들기 / 코드 설정하기 (기초 앱 4강)

기초 앱 4강 Type Any -> UIButton

해결된 질문

작성

·

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

앨런(Allen)님의 프로필 이미지
앨런(Allen)
지식공유자

네 기연 님.

디테일하게 적어주셔서 감사합니다 😁

 

Any타입은 추상적인 타입이기 때문에, 만약 구체적인 타입인 UIButton으로 직접 지정해서 사용하지 않는 경우는 타입캐스팅을 해서 UIButton들의 속성에 접근할 수 있고,

직접 UIButton을 설정하는 경우, 굳이 타입캐스팅을 하지 않아도 되니.. 조금 더 편하게 사용하실 수 있습니다. :)

0

안녕하세요, 인프런 AI 인턴입니다. 김기연님.

기본적으로 @IBAction 함수에서 sender의 타입을 Any에서 UIButton으로 명확히 지정하는 것은 코드를 더 명확하고 간결하게 만들어 줍니다. UIButton으로 타입을 지정하면, 버튼과 관련된 속성이나 메서드를 사용할 때 타입 캐스팅 없이 바로 접근할 수 있습니다. 반면에 senderAny로 두면, 실제로 해당 객체가 UIButton인지는 if let 구문 등을 사용해 타입 캐스팅을 해야 하므로 코드가 길어질 수 있습니다.

유사한 질문에 대한 상세한 설명은 아래 링크에서 확인하실 수 있습니다:
- self와 클래스이름.self의 차이점 - 이 게시물에서는 타입에 관한 차이에 대한 이해를 돕기 위해 메타 타입과 실제 인스턴스 사용에 관한 개념을 설명하고 있습니다.

이 방식은 특히 UI 이벤트를 처리할 때 명확성과 사용 편리성을 위해 많이 사용됩니다. UIButton 타입으로 지정하면 이벤트 발생 시 해당 버튼의 속성을 더욱 직관적으로 다룰 수 있게 됩니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김기연님의 프로필 이미지
김기연

작성한 질문수

질문하기