2016-07-18 3 views
0

A, B 및 C라고 말하면 A와 B가 푸시 C는 이제 C에서 A로 빠르게 건너 뛰기를 원하지만 나는 어떤 가치관을 원한다. 알림을 통해 가능하다는 것을 알고 있지만 위임을 사용하면 가능합니다. 클래스 C를 다음과 같이 A로 선언합니다. 클래스위임을 사용하여 계층 구조에서 레벨 3에서 1로 값을 전달하는 방법

// 내가 같은 일을하지만 대리자 메서드는 클래스 A에 호출되지

C *c = [C new]; 
c.delegate = self; 

A는 제안이 필요합니다.

답변

0

전달해야하는 값에 대해 새 DataModel 클래스를 만들 수 있습니다. B를 밀어 넣을 때

의 인스턴스를 생성

는, A.

modelObjectInstance 말, B.

modelObjectInstance에 원하는대로 업데이트

B 수행에의 참조를 전달합니다.

C를 밀어는 modelObjectInstance에 원하는대로 업데이트 C가 수행

C.

에 해당 참조를 전달합니다.

이제 B와 C가 팝되면 A에 업데이트 된 값이있는 modelObjectInstance이라는 참조가 있습니다.

참고 : modelObjectInstance에 대해서는 B와 C에 약한 참조를 작성하십시오. 그렇지 않으면 보관주기가 있습니다.

+0

그게 C에서 A로 직접 뛰어 오르는 것인가? 왜냐하면 A -> B -> C를 옮긴 후 C -> A로 옮기기 때문인가요? – Aleem

+0

예. 객체의 소유권은 A와 함께 유지되며 B와 C에 대한 참조를 전달하는 것입니다. 기본적으로 동일한 객체 내부의 값을 수정합니다. 어느 시점에서도 객체의 값을 다른 참조로 직접 설정하지 않도록 조심하십시오. 예를 들어 같은 refenece에서 값을 업데이트하십시오. modelObject.value1 = whateverValue. – 7vikram7

+0

nsstring과 동일한 흐름을 수행했지만 문자열에서 작동하지 않는 것은 강력한 참조와 weak 참조와 함께 B 및 C로 작성됩니다. 내가 틀린 곳? – Aleem

관련 문제