Sign In
상태
Empty
담당자
Empty
Swift - tableView.delegate = self 에서 프로토콜 타입을 할당해야 하는 자리에 self를 할당하는 이유는?
Swift 프로토콜에는 Protocol as Type, Delegation이라는 개념이 적용되기 때문이다.
Protocol as Type
class A: C {}
struct B: C {}

protocol C {
    /**
     - 타입으로의 프로토콜 - Protocol Delegation
     - self에 특정 프로토콜을 연결시켜줬기 때문에, 
       self 자체는 해당 프로토콜의 타입을 이어받음
     */
}

class D {
    // 인스턴스에 프로토콜 타입을 접목해줌
    var a:C = A()
    
    func _i() {
        // 다른 클래스의 인스턴스에도 
        // 동일 프로토콜을 적용받은 다른 클래스를 할당할 수 있음
        a = D()
    }
}
Protocol's Delegation
클래스에 Protocol을 연결하여 위임자를 자기 자신의 인스턴스로 할당할 수 있다.
물론 동일 프로토콜을 적용한 다른 클래스의 인스턴스로 위임하는 것도 가능!
class SomeView: UIViewController, UITableViewDelegate {
  @IBOutlet weak var tableView: UITableView!
    
  @override func viewDidLoad() {
    super.viewDidLoad()
    tableView.delegate = self
  }
}
여기서는 tableView 라고 하는 프로퍼티의 일을 SomeView의 인스턴스가 직접 위임받아 처리할게! 라는 뜻으로 이해하면 된다.
👍