Могу ли я поменять супер класса? - PullRequest
0 голосов
/ 22 июля 2010

Можно ли каким-то образом выбрать супер класса (предпочтительно в методе alloc или init), чтобы мой класс наследовал от чего-то другого?

Ответы [ 2 ]

3 голосов
/ 22 июля 2010

Вы можете сделать это в -init, создав экземпляр нужного целевого класса и сбросив self.Обязательно отправьте сообщение -release предыдущему экземпляру, если вы это сделаете.

0 голосов
/ 23 июля 2010

Нет, вы не можете. И : да, вы можете.

Класс (!) - это относительная статическая вещь. Он «жестко привязан» к своему суперклассу. Это важно, поскольку должна быть какая-то вещь, зная, как обращаться с выделенной памятью и другими вещами.

Нечто другое - это пример. Вы получаете экземпляр некоторого класса, «спрашивая» его класс за один. (И, как правило, после получения вы запрашиваете инициализацию и так далее.)

В этот момент обычное поведение может быть «нарушено». Но, как я думаю, это не то, что нужно для начинающих , вы должны иметь опыт, когда делаете такие вещи! Зачем? Прочитайте материал, Apple об этом говорит. И видите, что даже Apple делает такие вещи! Посмотрите на кластеры классов, такие как NSNumber: Руководство по основам какао (Не могу опубликовать больше, чем этот, но вы наверняка найдете документацию NSNumber без моей помощи.)

...