아웃렛 변수와 액션 함수에 대한 자세한 설명

Posted on 2021-08-30 by GKSRUDTN99
Swift&Xcode Xcode Swift

아웃렛 변수

객체에 대한 속성을 지정할 때 사용하는 연결

@IBOutlet var lblHello: UILabel!
  1. @IBOutlet

    • @IBOutlet으로 정의된 변수를 아웃렛 변수라고 부른다.
    • 여기서 IB는 Interface Builder의 약자로, @IB로 시작되는 변수나 함수는 인터페이스 빌더와 관련된 변수나 함수라는 것을 의미한다.
    • @IBOutlet은 객체를 소스 코드에서 참조하기 위해 사용하는 키워드이며 주로 색상, 크기, 모양, 선의 두께, 텍스트 내용 등 객체의 속성을 제어하는 데 사용한다.
  2. strong/weak

    • 이 두가지는 메모리 회수 정책을 나타내는 키워드이다.
    • 일반적으로 객체를 참조하기 위한 아웃렛 변수는 strong을 사용한다.
    • weak로 아웃렛 변수를 선언하면 다음과 같이 변수 정의 앞에 weak가 추가된다.
@IBOutlet weak var lblHello: UILabel!
  • strong으로 선언된 변수는 다른 곳에서 참조하고 있을 경우 메모리에서 제거되지 않는다.
  • weak로 선언된 변수는 다른 곳에서 참조하고 있더라도 시스템이 임의적으로 메모리에서 제거할 수 있다.
  • strong으로 선언된 변수들끼리 상호 참조하는 일이 생길 경우에는 앱이 종료되기 전까지는 메모리에서 제거되지 않기 때문에 메모리 누수가 발생할 수 있다.
  • 이 경우 어느 한 변수 또는 모든 변수를 weak로 지정하면 시스템에서 임의 삭제가 가능하므로 상호 참조 하더라도 사용하지 않을 경우에는 메모리가 삭제될 수 있다.

액션 함수

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

    • 객체의 이벤트를 제어하기 위해 사용하는 키워드이다.
    • 특정 객체에서 원하는 이벤트가 발생했을 때 정해진 작업을 실행하기 위해 사용한다.
  2. func btnSend

    • 함수를 선언할 때 func 키워드를 사용해서 선언한다.
  3. (_ sender: UIButton)

    • 액션 함수가 실행되도록 이벤트를 보내는 객체
    • 여기서는 버튼 객체에서 이벤트가 발생했을 때 해당 액션 함수를 실행시킬 것이므로 UIButton 클래스 타입을 선택한다.
  4. txtName.text!

    • TextField 객체가 가지고 있는 속성 중 텍스트 내용을 의미하는 속성이다.
    • 끝에 붙은 !는 옵셔널 변수의 강제 언래핑을 의미한다.