[UIKit] @IBAction과 @IBOutlet

박상우·2023년 7월 28일
0

UIKit

목록 보기
1/8
post-thumbnail
post-custom-banner

@IBAction과 @IBOutlet은 무엇이고 어떤 차이가 있을까?!

궁금한 코드

    @IBOutlet weak var slider: UISlider!
    
    @IBAction func sliderChanged(_ sender: UISlider) {}

생각하게 된 계기

storyboard로 기초적인 타이머 앱을 만들던 중 버튼을 코드 영역에 연결시켰을 때 생성되는 @IBOutlet과 @IBAction에 궁금증이 생겼다. 일단 하나씩 뜯어보며 생각해보자.

@의 의미

'@' 는 컴파일러에게 특정 속성을 갖고 있다고 전해주는 예약어이다. at을 줄여 '@'기호를 사용한 것이다.

IB의 의미

IB는 Interface Builder의 줄임말이다. 즉 Interface Builder에서 생성된 정보를 가져온다면 @IBOulet이 되는 것이고 @IBAction은 Interface Builder의 생성된 정보를 이용해 Action을 수행하겠다는 뜻이다.

나머지 것들의 의미

  • weak
    @IBOutlet에서의 weak은 약한 참조를 의미한다. 반대로 strong은 강한 참조의 의미인데 연결을 할 때 strong을 선택한다면 weak과 같이 표시되는 것이 아니라 생략하게 된다.

강한 참조와 약한 참조?

강한 참조(Strong Reference)

  • 기본적으로 Swift에서의 참조는 강한 참조이다.
  • 강한 참조는 인스턴스를 참조하는 변수나 상수가 해당 인스턴스에 대한 소유권을 가지고 있다는 의미이다.
  • 객체에 대한 강한 참조가 하나 이상 존재한다면 해당 객체는 메모리에서 해제되지 않는다.
  • 주로 객체가 필요한 동안 유지해야 할 때 사용된다.
  • 하지만, 강한 참조 사이클(Strong Reference Cycle)일 발생할 수 있으며, 이로 인해 메모리 누수(memory leak)가 발생할 수 있다.

약한 참조(Weak Reference)

  • 약한 참조는 인스턴스를 소유하지 않고 참조한다. 즉, 소유권을 가지지 않는다.
  • 약한 참조는 객체의 생명 주기에 영향을 미치지 않으며, 해당 객체의 참조 카운트를 증가시키지 않는다.
  • 만약 해당 객체에 대한 강한 참조가 모두 해제되면, 해당 객체는 자동으로 메모리에서 해제된다.
  • 강한 참조 사이클을 방지하는 데 사용된다.

    참조에 관한 내용은 추후에 더 포스팅 하도록 하겠다.
  • var
    변수를 선언하는 키워드이다. 상수를 선언하는 키워드로는 let이 있다. 하지만 지금 상황에서는 slider의 값이 funcSliderChanged라는 함수에 의해 변경되므로 var로 선언해야만 한다.

  • slider
    실제로 UISlider 클래스의 인스턴스를 참조하는 변수의 이름이다.

  • UISlider
    UISlider는 UI 요소 중 하나로, 수평 또는 수직으로 움직일 수 있는 슬라이더를 나타내는 클래스이다. 사용자가 슬라이더를 움직여 값을 선택하거나 조정할 수 있다.

  • !
    '!'는 Swift에서 옵셔널 타입을 나타내는 표기법으로, UISlider 타입의 인스턴스이거나 nil일 수 있음을 의미한다.

  • func
    함수를 선언하는 키워드이다.

  • sliderChanged
    UISlider를 @IBAction으로 연결해 만든 실질적인 메서드의 이름이다. 슬라이더의 값이 변경될 때 호출되는 콜백 메서드이다.

  • (_ sender: UISlider)
    메서드의 매개변수로 UISlider 타입의 sender 매개변수를 받는다. 슬라이더가 이벤트를 발생시킬 때 해당 메서드로 슬라이더 인스턴스가 전달된다.

마무리 하며

단순히 지나칠 수 있는 단어들까지 정확하게 알고 사용해야만 완성도 있는 앱을 만들 수 있게 된다고 생각한다.
언제나 기초는 탄탄히! 사고는 유연하게!

profile
코딩으로 세계정복👑
post-custom-banner

0개의 댓글