Cocoa Framework

  • 목적에 맞게 확장해야 할 기존 객체가 많음

  • ex) TableView의 subclass를 만드는 대신에, 간단하게 TableView에 helper object를 주면 됨.

Delegate

  • delegate outlet이 helper object를 가리키도록 설정

UITableView

  • dataSource라는 helper object가 있음 
    - UITableDataSource의 informal protocol을 준수해야함.

 

Delegate 동작 방식

객체가 delegate 메서드를 구현하면 Cocoa framework가 그 메서드 호출

NSObject에 아래 함수 가지고 있음
- (BOOL)respondsToSelector:(SEL)aSelector; // aSelector 메서드 존재 시 YES return

// delegate가 메서드를 구현했는지 확인
if([delegate respondsToSelector:@selector(tableView:shouldSelectRow:)]) {
    // 메서드 실행
    ok = [delegate tableView:self shouldSelectRow:rowIndex];
}

 

Protocol

java에서의 interface (약속!!!!)

 

- protocol: method 정의

- implement: class에서 사용

+ Recent posts