본문 바로가기
IOS/IOS 스터디(Swift)

ios 기초] 02. Outlet, Action

by 김마리님 2022. 5. 3.

스위프트에서 뷰에 함수를 지정할 때 @IBAction 혹은 @IBOutlet 이 붙는데, 둘 차이는 명확하다.

 

@IBOutlet은 객체에 속성을 지정해야할 때 사용하며

@IBAction은 객체에 이벤트를 넣을 때 사용한다.

 

1. Outlet

예시 함수를 보자.

    @IBOutlet var IbHello: UILabel!

해당 함수에서 var IbHello 부분은 변수를 선언하는 부분이다. 코틀린과 마찬가지로 변수를 선언할때 var을 붙이며, IbHello 부분은 변수명이 된다.

UILabe부분은 해당 함수의 변수 타입을 나타낸다. 

 

아웃렛 변수를 선언할 때 다음과 같이 storage도 지정하는데,

해당 부분은 메모리 함수 정책이다. 기본 값은 Strong이다.

Strong의 경우 다른 곳에서 참조하고 있으면 이 값이 메모리에서 제거되지 않는다. 하지만 weak의 경우 다른 곳에서 참조하는 중임에도 시스템이 임의로 값을 삭제할 수 있다. 이는 메모리 이슈때문으로 strong값들이 상호참조하는 경우 메모리 누수가 생기기 때문이다.

 

 

2. Action

Action함수 예시는 다음과 같다

    @IBAction func btnSend(_ sender: UIButton) {
        IbHello.text = "Hello, " + txtName.text!
    }

Action의 경우 함수로 선언되기 때문에 func로 값을 선언한다. btnSend는 함수의 이름이다.

(_sender : UIButton )의 경우 이벤트를 보내는 객체를 지정하며, UIButton으로 객체의 클래스를 지정한다.

괄호 내부에 안드로이드의 addEventLister() {} 처럼 {} 내부에 이벤트에 대한 함수를 입력한다. 

반응형