Sign In
한결
Status
Empty
Assignee
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의 인스턴스가 직접 위임받아 처리할게! 라는 뜻으로 이해하면 된다.
👍