2012-02-27 3 views
0

iPhone 프로젝트에서 A, B & 클래스가 있습니다. iPhone 앱이 실행되는 동안 클래스 (A 또는 B)가 클래스 C의 객체를 인스턴스화 할 수 있습니다. 클래스 C에서 객체 (A 또는 B)를 인스턴스화하는 클래스를 어떻게 알 수 있습니까? C에 ivar를 추가하지 않고 알 수있는 방법이 있습니까? 나는 슈퍼 클래스를 사용하여 시도했으나 잘못 사용하고 있거나 내가하려고하는 것에 의미가 없다.어떤 클래스가 다른 클래스를 호출했는지 어떻게 알 수 있습니까?

감사합니다.

답변

1

을 원하는대로 플래그를 설정할 수있는 초기화에 새로운 초기화 방법을 initFromClass: (id) parent를 추가 할 수 있습니다.

다시 전달하는 한 가지 방법은 대리인을 통해 이루어집니다. C에서 대리인 속성을 설정하려면 (A 또는 B)를 얻을 수 있습니까? 그건 당신이 피하고 싶은 ivar와 비슷하지만 프로토콜을 사용하면 괜찮은 OO 코드로 간주됩니다.

왜 C가 알아야하는지 알면 좋을 것입니다. 그는 방법을 보내야합니까? 위임은 그 일에 아주 좋습니다. 그렇지 않다면 William Bonar가 언급 한 것처럼 커스텀 init 메소드를 사용하는 것이 가능하다. 당신의 ViewController로 작업하는 경우 당신은 컨트롤에 대한 진술하지 않는

+0

고마워요, 다른 뷰를 통해 표시되는 뷰에 불과하므로 ViewController가 필요 없습니다. 최상의 접근 방식 이었지만 대리자 옵션이 완벽하게 작동했습니다! 감사! – Christian

1

클래스 c가 사용자의 제어를받지 않는다고 가정합니다.

당신은 C를 서브 클래스 화해, 당신은 슈퍼 클래스 개체가 개체의하지 창조자, 상속 무엇

+0

죄송 같은 presentingViewController 등의 방법 등

행운을 빌어 요,

데미안 있습니다. 실제로 클래스 C를 제어 할 수 있습니다. 클래스 C는 다른 두 가지 뷰 (A 및 B)에서 보여 질 수있는 도움말 뷰이므로 어떤 클래스가 클래스 C를 표시하는지 알 필요가 있으므로 어떤 텍스트가 표시되는지 알 수 있습니다. 다른 도움말 클래스를 만들 필요가 없습니다. – Christian

관련 문제