2012-02-27 7 views
0

У меня есть классы A, B & C в проекте iPhone. Пока приложение iPhone запущено, любой класс (A или B) может создать экземпляр объекта класса C. Как я могу узнать в классе C, какой класс создавал экземпляр объекта (A или B)? Есть ли способ познания без добавления ivar к C? Я пробовал использовать суперкласс, но я либо неправильно его использую, либо не предназначен для того, что я пытаюсь сделать.Как узнать, какой класс называется другим классом?

Спасибо!

ответ

1

суперкласс является то, что объект наследует, не создатель объекта.

Один из способов связаться с делегатом - можете ли вы (A или B) установить свойство делегирования на C? Это похоже на ivar, которого вы хотите избежать, но используя протокол, он считается прекрасным кодом OO.

Было бы полезно знать, почему C должен знать. Нужно ли ему отправлять метод? Делегация отлично подходит для этого. Если нет, то использование пользовательских методов init, упомянутых Уильямом Бонаром, возможно. Если вы работаете с ViewController, то у вас есть такие методы, как presentingViewController, и т.д.

удачи,

Damien

+0

Спасибо, это просто представление, представленное над другим представлением, поэтому не было задействовано ViewController, это был бы лучший подход, но опция делегата работает отлично! благодаря! – Christian

1

Предполагая, что вы комментируете, что класс c не находится под вашим контролем.

Вы можете создать подкласс с и добавить новый INIT Методы initFromClass: (id) parent в инициализации вы можете установить любые флаги вы хотите

+0

Извините за не заявляя о контроле. На самом деле у меня есть контроль над классом C. Класс C - это вид справки, который можно показать из двух других разных представлений (A & B), поэтому мне нужно знать, какой из них показывает класс C, поэтому я могу узнать, какие тексты показаны на без необходимости создания другого класса справки. – Christian

Смежные вопросы