Swift

[Swift] Delegate 방식으로 데이터 전달하기 - 예제

CalKim 2021. 9. 2. 15:34

안녕하세요 CalKim입니다.

오늘은 간단하게 delegate 방식으로 데이터를 전달하는 방법을 준비하였습니다.

.

.

.

 

Delegate 방식으로 데이터 전달하기

1. Reciever class 를 만든다.

2. Sender class 를 만든다.

3. SendDataProtocol 을 만든다.

 

4. SendDataProtocol에 Sender가 데이터를 내보낼 함수 sendData를 선언한다.

 

5. Sender는 SendDataProtocol을 갖는 변수 delegate를 갖는다.

6. Reciever는 Sender 객체인 sender를 변수로 갖는다.

 

7. Reciever는 sender의 delegate로 자기 자신을 준다.

8. -> Reciever는 SendDataProtocol을 채택한다.

 

9. SendDataProtocol의 sendData 함수를 구현한다.

-> sendData 함수 구현을 통해 Sender가 데이터를 보내면 Reciever가 데이터를 어떻게 사용할지를 정할 수 있다.

 

10. Sender에서 sendData 함수의 파라미터로 데이터를 넣어 호출한다.

 

import Foundation

let reciever = Reciever()

class Reciever {
    var sender = Sender()
    
    var hey = 0 {
        didSet {
            print("\(self) : \(hey)")
        }
    }
    
    init() {
        sender.delegate = self
        sender.trigger()
    }
    
}


extension Reciever: SendDataDelegate {
    // 데이터(data)를 받으면 Reciever가 어떻게 처리할 것인가? -> hey에 data를 넣어라
    func sendData(data: Int) -> Int {
        self.hey = data
        return data
    }
    
}


class Sender {
    var delegate: SendDataDelegate?
    
    func trigger() {
        let randomNumber = Int.random(in: 0..<10)
        print("\(self) : \(randomNumber)")
        delegate?.sendData(data: randomNumber)
    }
    
}


protocol SendDataDelegate {
    func sendData(data: Int) -> Int
}

 

 

결과 - sender에서 만들어진 데이터가 reciever로 전달된 것을 확인할 수 있다.

 

 

 

 

 

 

 

 

* 이 게시글에서 내용 상의 틀린 점 혹은 더 알아야 할 점 등이 있다면  알려주시면 감사히 배우겠습니다

 

'Swift' 카테고리의 다른 글

[Swift] ARC에 대해서 알아보자  (1) 2021.09.02
[Swift] Int형(정수형)의 종류와 캐스팅  (1) 2021.08.18