inflearn logo
강의

Course

Instructor

Allen iOS App Development (Learning UIKit from Fundamentals by Building 15 Apps) - Up to MVVM

(Basics-1) Creating Your First App / Setting Up Code (Basic App Lesson 4)

기초 앱 4강 Type Any -> UIButton

Resolved

65

12silver0830

10 asked

0

뒤에 설명이 나오는지는 아직 모르겠는데 수강자 분들 참고하시라고 적어놓습니다...

 

강의에서 @IBAction 함수 선언할 때 sender Type 을 Any 에서 UIButton 으로 변경하는데 그 이유가

 

이건 sender 의 타입이 UIButton 이라는 걸 명확하게 하는 거라고 보면 되고

 

Any 로 놔두면 나중에 sender 를 써야할 때는 타입캐스팅을 해야 사용이 가능합니다.

 

[UIButton] 인 경우

sender.backgroundColor = ...

 

[Any] 인 경우

if let myButton = sender as? UIButton {

sender.backgroundColor }

ios iOS-Autolayout mvc mvvm uikit

Answer 2

0

allen

네 기연 님.

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

 

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

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

0

communityai8509

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

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

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

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

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

수강연장부탁드려도될까요..

0

37

2

Drawing Cycle 관련 질문

0

70

1

앱 제작 시 주로 코드로 작성하시는 이유가 있을까요?

0

94

2

델리게이트 패턴 관련 질문

0

65

2

수강 기간 연장 부탁드릴 수 있을까요?

0

60

1

활용 앱 57강 질문입니다.

0

54

1

활용 앱 30강 에러 질문입니다

0

63

2

기초앱 17강 Contraints 설정 질문입니다.

0

65

2

34강 유용한 앱 추천에 나오는 UIKitViewer에 대해서 질문이 있습니다

0

76

1

깃에 코드는 올려도 된다고 하셨는데

0

108

1

수강기간 연장신청 드려도 될까요?

0

82

1

수강 기간 연장 부탁드려도 될까요?

0

120

2

수강 기간 연장 신청 요청드립니다.

0

131

2

playground에서 상단 실행?아이콘 회전 관련하여...

0

136

1

활용앱53강에서 질문있습니다.

0

164

2

Project 명칭 변경방법이 궁금합니다.

0

140

1

override 에 대해서 궁금한 것이 있습니다.

0

123

2

섹션8] 코드 리팩토링 문의

0

99

1

xcode 에서 ios 버전 선택 및 시뮬레이터 관련 질문

0

558

2

수강 기간 연장 부탁드려도 될까요?

0

130

2

뷰모델의 상태변화 와 didSet

0

98

1

@Sendable 키워드

0

92

1

클로저

0

103

2

ThreadSafe하지 않을때 해경 방법

0

106

1