iOS 개발을 진행하다 보면, @IBAction, @IBOutlet 용어를 자주 접하게 된다.
처음에는 앱 개발과정에서 특정한 버튼을 추가 및 기능을 연결할 때 추가해야 되는 순서처럼 느꼈다.
이번 기회에 IBAction과 IBOutlet의 역할과 정의가 무엇인지 정리해보고자 한다.
참고로 etist블로그님의 글을 참고하였다.
* IBAction, IBOutlet의 역할
@IBAction, @IBOutlet은 StoryBoard과 연결고리 역할을 수행한다. 즉, 사용자가 추가한 컴포넌트(버튼, 레이블)와 연결이 가능하다.
- IBAction : 이벤트가 일어난 경우, 호출되는 Action을 정의한 것
- IBOutlet : 컴포넌트에 접근하기 위한 변수
* IBAction, IBOutlet의 정의
IB : Interface Builder의 약자
IBAction은 입력이 들어왔을때 어떤 행동을 할 지를 나타내고 IBOutlet은 데이터를 가져오는 것이다.
즉, IBAction은 Interface Builder를 통해 받아온 정보로 Action을 수행하겠다는 의미.
* 그럼! 은 무슨 의미지?
Swift의 변수 뒤에는 ! 또는 ? 의 기호가 올 수 있다. 이를 Optional 이라고 한다. 이름 그대로 붙여도 되고 안 붙여도 되는 선택사항이다.
이 Symbol을 변수 뒤에 붙여주면 Nil ( 다른 언어에서는 보통 Null ) 값이 들어갈 수 있는지 없는지를 미리 결정해줄 수 있다.
예를 들어
var message1: String = "Hello, World!" // ok
var message2: String? // ok
var message3: String // error 발생 (Nil값이 허용되지 않음)
! 은 개발자가 이 변수에는 Nil 값이 들어갈 리가 없다고 확신한다! 할 때 사용해주면 되는 Optional Symbol이다.
그에 반해 ?는 여기에 Nil 값이 포함될 수 있다는 의미로 사용하면 된다고 본다.
'iOS' 카테고리의 다른 글
[33일차] guard let과 if let 차이점 (0) | 2020.09.19 |
---|---|
[32일차] Animation은 왜 사용하는 것인가? (0) | 2020.09.15 |
[30일차] @escaping 이란? (0) | 2020.08.28 |
[29일차] Protocol이란? (0) | 2020.08.27 |
[28일차] SearchBar와 키보드 숨김 처리 (0) | 2020.08.22 |
댓글