1

코코아를 처음 접하는 많은 개발자들과 마찬가지로, 나는 위임자와 컨트롤러 개념에 어려움을 겪고 있습니다. 나는 기초를 얻는다. 그러나 1 개의 물건은 나를 괴롭힌다. 실질적으로 모든 설명은 컨트롤러와 대리자가 같은 대상인 경향이있는 "보통"또는 "단순한 경우"(예제로 제공하는 유일한 경우)라고 말합니다. 그렇다면 동일한 인터페이스 개체에 대해 컨트롤러와 대리인을 언제 분리해야합니까? 당신이 공유하고 싶은 경우 대리자가 필요에 대해 별도의 클래스를 사용별도의 대표와 컨트롤러

답변

2

두 가지 일반적인 경우는 같은 위임 메시지에 대한 응답으로 관련이없는 작업을 수행 할 필요가

  1. , 또는
  2. 입니다 여러 뷰 또는 컨트롤러 중에서 대리인의 논리.

첫 번째 상황의 예는 서로 관련되지 않은 두 개의 테이블이있는 페이지입니다. 각 UITableView에는 자체 대리인이 필요하므로 컨트롤러를 대리인으로 사용하려면 각 대리자 메서드에서 추한 if 문이 필요합니다. 이 경우 별도의 위임자를 정의하고 사용하는 것이 좋습니다.

두 번째 상황의 예는 유사한 구조의 테이블에서 DB 데이터를 보여주는 비슷한 페이지 그룹입니다. 페이지 자체는 충분히 유사하지 않으므로 컨트롤러를 전체적으로 재사용 할 수는 없습니다. 대리자를 컨트롤러에 배치하도록 선택한 경우 테이블 뷰의 데이터 소스 뒤에있는 대부분의 논리는 동일합니다. 코드를 공유 대리자 구현에 넣고 각 컨트롤러에서이 컨트롤러와 연결된 테이블에 특정한 구성 매개 변수를 사용하여 대리자를 인스턴스화하게 할 수 있습니다. 당신의 대리인으로 컨트롤러 이외의 다른 개체를 사용하는 경우

한 주 염두에 두어야합니다 : 뷰에만 참조를 할당/약한를 유지하기 때문에 컨트롤러가 대리자에 대한 강한 참조를 보관/유지한다. 자세한 내용은 property "assign" and "retain" for delegate을 참조하십시오.

관련 문제