[swift] 클로저 클래스 사용

이 글에서는 Swift에서 클로저를 사용하여 클래스를 초기화하고 속성을 설정하는 방법에 대해 설명하겠습니다.

클로저란?

클로저는 함수와 비슷하지만 이름이 없는 코드 블록입니다. Swift에서 클로저는 중괄호 {} 안에 매개변수와 리턴 타입을 가지고 있습니다.

클로저를 이용한 클래스 초기화

클로저를 사용하여 클래스를 초기화하려면 init 키워드 뒤에 중괄호를 사용하여 클로저를 정의합니다.

class MyViewController: UIViewController {
    let myClosure: () -> Void
    
    init(closure: @escaping () -> Void) {
        self.myClosure = closure
        super.init(nibName: nil, bundle: nil)
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        myClosure()
    }
}

위의 예시에서 MyViewController 클래스는 myClosure 클로저 속성을 가지고 있습니다. init 메서드로 클로저를 받아서 속성에 할당하고, viewDidLoad 메서드에서 클로저를 호출합니다.

클로저를 이용한 속성 설정

클로저를 사용하여 클래스의 속성을 설정하려면 다음과 같이 클로저를 이용하여 값을 계산한 후 속성에 할당할 수 있습니다.

class Model {
    var data: Int
    
    init(data: Int, closure: () -> Int) {
        self.data = closure()
    }
}

let model = Model(data: 5) {
    return 10
}

위의 예시에서 Model 클래스는 data라는 속성을 가지고 있으며, init 메서드로 클로저와 함께 값을 받아서 속성에 할당하고 있습니다.

클로저를 사용하여 클래스를 초기화하고 속성을 설정하는 방법을 알아보았습니다. 클로저를 적절히 활용하면 코드를 간결하게 작성할 수 있고, 유연한 구조를 만들 수 있습니다.

참고 자료: