안녕하세요 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 |