@IBOutlet과 @IBAction

ellyheetov·2021년 2월 9일
0

@IBOutlet과 @IBAction을 모아서 인터페이스 빌더 어노테이션(Interface Builder Annotation)이라고 부른다.
이는 처음에 앱이 빌드 될때 컴파일러가 체크한다. 연결정보를 찾아서 인터페이스 빌더의 객체와 서로 연결해 준다.

@IBOutlet - 객체의 참조

화면상의 객체를 소스코드에서 참조하기 위해 사용하는 어노테이션이다. 주로 객체의 속성을 제어하기 위한 목적으로 class의 property에 연결한다. @IBOutlet으로 정의된 property를 아울렛 변수라고 부른다.

@IBOutlet var uiTitle : UILable!

Storage : Strong VS Weak

IBOutlet 연결 시 Storage값을 정하는 항목이 있다.

Screen Shot 2021-02-09 at 3 31 36 PM

Strong과 Weak는 메모리 회수정책에 차이가 존재한다.

Strong

@IBOutlet var uiTitle : UILable!

기본적으로는 Strong값이 default이다. Strong으로 선언된 변수는 다른 곳에서 참조되고 있는 경우 메모리에서 사라지지 않는다.

Weak

@IBOutlet weak var uiTitle : UILable!

Weak - 다른 곳에서 참조되고 있더라도 시스템에서 임의로 제거 할 수 있다.
Weak 타입으로 선언된 변수는 간혹 값을 할당 해 주었는데도 사라지는 경우가 있다. (한참 고생함)

그런데 Weak 타입이 왜 필요한 걸까?
Strong 타입 객체들끼리 상호 참조가 존재하는 경우, 앱이 실행되는 한 영원이 메모리에서 제거되지 않는다. 이는 메모리 누수로 이어진다.

이후 ARC(Auto Referencing Counter) 참고하기

@IBAction - 객체의 이벤트 제어

@IBAction는 이벤트를 제어할 때 사용하는 어노테이션이다. 일련의 프로세스를 실행하는 목적을 가진다. 이를 위해 method와 함께 사용되는데 이를 액션 메소드라고 한다.

Screen Shot 2021-02-09 at 3 40 17 PM
@IBAction func nextButtonTouched(_ sender: Any) { }

정리

객체의 속성을 제어할 때 ) Outlet
객체의 이벤트를 연결할 때 ) Action

profile
 iOS Developer 좋아하는 것만 해도 부족한 시간

0개의 댓글