이것은 규칙/모범 사례에 관한 질문입니다. 두 개의보기 컨트롤러 Foo
및 Bar
이 있다고 가정 해보십시오. Foo
은 사물의 목록을 보여 주며 각각의 사물은 연관된 이미지가 있습니다. Bar
이 사용됩니다. 예 : Foo
에 사람 이름 목록이 표시 될 수 있으며 해당 이름 중 하나를 누르면 Bar
컨트롤러를 사용하여 그 사람의 사진이 표시됩니다. 따라서 Bar
에는 Foo
의 간단한 정보가 필요합니다.이 경우 표시 할 이미지입니다.대상보기 컨트롤러의 단순 위임 메서드 또는 속성
우리가 Bar
에 이미지를 얻을 수있는 두 가지 방법이 있습니다 :
내가) 우리가 정의 BarDelegate
프로토콜의 일종을 사용하여, Bar
의 대리인으로 Foo
을 설정하고 BarDelegate
이 - (UIImage *)imageToPresent;
의 라인을 따라 의무적 인 방법을 가지고는
ii) Bar
에 간단한 속성이 있습니다. 예 : @property (nonatomic, weak) UIImage *imageToPresent;
이고 Foo
은 Bar
으로 세분하기 전에이 속성을 설정하십시오.
이 두 가지 중에서 규칙이나 선호하는 방법이 있습니까?
가장 좋은 방법은 위임 방법의 장점은 Bar
에 필요한 몇 가지 사항이 있음을 분명히 알 수 있다는 것입니다. 물론 Foo
은 자신을 Bar
대리인으로 설정하는 것을 잊어 버릴 수도 있지만 Bar
이 10 개의 필수 속성을 말하면 이제는 10 개가 아닌 1 개의 장소 만 망칠 수 있습니다 (대리인을 잊어 버리는 것을 잊어 버릴 수 있습니다). 속성을 사용하는 이점은 코드가 간결 해집니다. 문제의 속성이 대상보기 컨트롤러의 수명주기 전체에서 불변 인 경우에만 관심이 있다는 점에 유의해야합니다. 라이프 사이클 전반에 걸쳐 프로퍼티가 변형되어 있고 대상 뷰 컨트롤러가 소스 뷰 컨트롤러를 두 번 이상 "쿼리"해야하는 경우 위임에 추가적인 매력이있을 수 있음을 알고 있습니다.