2012-01-27 4 views
1

제 경우 UIViewController B는 UIViewController A.의 하위 클래스입니다. B는 A에서 하위 클래스로 분류되므로 (즉 A가 B의 부모이므로) A에서 모든 메서드와 변수에 확실하게 액세스 할 수 있습니다.iOS 하위 클래스 문제

그러나 A는 B의 변수가 필요합니다. 그렇게 할 수 있습니까?

감사합니다.

+0

@class ...... ???? –

+0

런타임시 실제 변수 값에 액세스하는 것에 대해 이야기하고 있습니까? 그렇다면 몇 가지 옵션이 있습니다. 알림, 데이터를 nsuserdefaults에 저장하는 등 – ader

+0

런타임에서 B (하위)가 설정 한 인스턴스 변수에 A (상위)가 액세스 할 수있게하려고합니다. 어떻게 설계하고 코딩 하는가? – user403015

답변

0

실제로 이러한 관계 유형이 필요한 경우 디자인이 잘못되었습니다. 내 말은 - 당신은 상속 관계가 필요하지 않지만 집계 또는 구성과 같은 것입니다. 예를 들어 관계의 유형이 Liskov 대체 원칙을 위반합니다.

그러나. 목표 C는 역관계를 허용합니다. 델리게이트 (@protocol)를 사용하여이 @ 프로토콜을 수용하는 알려지지 않은 객체로부터 일부 데이터를 검색 할 수있는 인터페이스를 설명 할 수 있습니다.

따라서 B 클래스는 B의 일부 속성에 대한 액세스를 제공하는 프로토콜을 준수해야합니다.이 프로토콜을 사용하여 A가 작동해야합니다. 즉 A가 필요한 게터를 알고 있어야합니다.

0

하위 클래스 A에 해당 변수를 기본값으로 추가하십시오. 그러면 하위 클래스 B에서도 사용할 수 있습니까?

원하지 않는 것이라면 디자인에 문제가 있다고 생각합니까?

+0

내가 원하는 것은 A (부모)가 B (자식)에 의해 런타임에 설정 한 인스턴스 변수에 액세스해야한다는 것입니다. – user403015

0

하위 클래스에 선언 된 인스턴스 변수에 getter 메소드가있는 경우 수퍼 클래스의 모든 메소드는 해당 getter 메소드에 대해 respondsToSelector :가 해당 클래스의 객체를 요청할 수 있으며, 그렇다면이 메소드를 호출하여 값을 가져옵니다. 인스턴스 변수

+0

감사합니다. 아이디어 샘플 코드를 보여 주시겠습니까? 나에게 큰 도움이 될 것입니다. – user403015

관련 문제