UITableView
와 UITableViewDelegate
를 사용하는 경우, UITableView
는 델리게이터 역할을 하고, UITableViewDelegate
는 델리게이트 역할을 한다. UITableViewDelegate
프로토콜에 정의된 메서드를 사용하여 사용자 상호작용 및 뷰 업데이트와 관련된 작업을 처리한다. protocol DataReceiverDelegate: AnyObject {
func didReceiveData(data: String)
}
class DataSender {
weak var delegate: DataReceiverDelegate?
func sendData() {
let data = "Some data"
delegate?.didReceiveData(data: data)
}
}
class DataReceiver: DataReceiverDelegate {
let dataSender = DataSender()
init() {
dataSender.delegate = self
dataSender.sendData()
}
func didReceiveData(data: String) {
print("Data Receive: \(data)")
}
}
final class ViewController: UIViewController {
private lazy var presenter = viewPresenter(viewController: self)
override func viewDidLoad() {
super.viewDidLoad()
presenter.viewDidLoad()
}
}
extension ViewController: ViewProtocol {
func setupViews() {
// ...
}
func setupLayout() {
// ...
}
}
struct TestData {
let testData: String
}
// protocol을 weak 처리하기 위한 조건
protocol ViewProtocol: NSObject {
func setupViews()
func setupLayout()
}
final class ViewPresenter {
private weak var viewController: ViewProtocol?
var testModel: TestData?
init(
viewController: ViewProtocol
) {
self.viewController = viewController
self.testModel = TestModel(testData: "Test")
}
func viewDidLoad() {
viewController?.setupViews()
viewController?.setupLayout()
}
}
제가 학습한 내용을 요약하여 정리한 것입니다. 내용에 오류가 있을 수 있으며, 어떠한 피드백도 감사히 받겠습니다.
감사합니다.