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에서 사용
'iOS > iOS 기본기' 카테고리의 다른 글
[iOS] Archive - NSCoding protocol, Serialization(직렬화), NSUserDefaults (0) | 2019.11.24 |
---|---|
[iOS] KVC(Key-value coding) / KVO(key-value observing) (0) | 2019.11.24 |
[iOS] AppKit Framework - UIControl, target-action (0) | 2019.11.24 |
[iOS] nil, Nil, NULL, NSNull / Swift와 Objective-C에서의 nil 차이점 (0) | 2019.11.24 |
[iOS] @property / @sythesize / @dynamic (0) | 2019.11.24 |