프론트엔드/Swift

[Swift] 기본적인 ViewController 함수 파악하기

dotudy 2024. 10. 5. 11:18
import UIKit

class ViewController: UIViewController {
    @IBOutlet var lblHello: UILabel!  //출력 레이블용 아웃렛 변수
    
    @IBOutlet var txtName: UITextField! //이름 입력용 아웃렛 변수
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

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

 

객체의 속성을 지정할 때는 Outlet으로, 객체에 이벤트를 넣을 때는 Action으로 연결한다.

 

@IBOutlet으로 정의된 변수를 아웃렛 변수라고 부른다. IB는 Interface Builder로, @IB로 시작되는 변수나 함수는 모두 인터페이스 빌더와 관련된 변수나 함수를 의미한다.

@IBOutlet은 객체를 소스 코드에서 참조하기 위해서 사용하는 키워드로 텍스트의 색상, 내용 등 객체의 속성을 제어하는데 사용된다.

 

var lblHello: 변수 선언은 var로 한다.

 

UILabel!: 변수의 타입을 나타내고 해당 예제에서는 Label 객체에 대한 변수이기에 UlLabel 클래스 타입을 선택한 것이다. UI는 User Interface이다.

 

strong/weak: 메모리 회수 정책을 나타내는 키워드로 강한 참조, 약한 참조로 나타는데 강한 참조를 하면 메모리 누수가 발생할 수 있어서 weak를 사용하는 경우도 있다. 하지만 default는 strong이다. weak로 선언하면 변수 정의 앞에 weak가 추가된다.

 

strong으로 변수가 선언되면 다른 곳에서 이를 참조하고 있으면 메모리에서 제거되지 않는다. 하지만 weak로 변수가 선언되면 다른 곳에서 이를 참조하고 있더라도 자동적으로 메모리에서 제거될 수 있다. 

 

@IBAction: 객체의 이벤트를 제어하기 위한 키워드로 버튼을 누르는 등 특정 객체에서 이벤트가 발생했을 때 정해진 작업을 실행한다.

 

(_ sender: UIButton): 액션 함수가 실행되도록 이벤트를 보내는 객체이다. 해당 예제에서는 버튼 객체가 눌렸을 때 발생하므로 UIBotton 클래스 타입을 선택했다.

 

!: 끝에 붙는 !는 옵셔널 변수의 강제 언래핑을 의미하지만 해당 내용에서는 다루지 않겠다.