Я учу себя Objective-C как чувство вины, если хотите.У меня есть самопровозглашенное сильное понимание языка Java, так что это не ужасно сложный переход - это, конечно, весело.Но, увы, мой вопрос!
Я пытаюсь воспроизвести что-то, что существует в PHP: Позднее статическое связывание.В PHP я могу украсить вызов метода «static ::», который будет динамически связывать этот метод с вызывающей стороной во время выполнения.С другой стороны, если используется ключевое слово «self ::», привязка является статической и связана с классом, в котором она находится, независимо от того, какой дочерний класс ее вызывает.
В Obj-C,У меня трудности с воспроизведением этой парадигмы.Я спросил моего повелителя, Google, как в последнее время статически связываться в Какао, но я не думаю, что это возможно.Это может называться как-то иначе, или это может потребовать обходного решения.Вот что я делаю сейчас:
Метод родительского класса:
-(id) whoAmI {
return ([self class]);
}
Дочерний класс ChildClass расширяет ParentClass и не переопределяет метод экземпляра whoAmI.
NSLog(@"Calling from PARENT: %@", [parent whoAmI]);
NSLog(@"Calling from CHILD: %@", [child whoAmI]);
Когда я отправляю сообщение каждому из объектов класса, динамическое связывание делает то, что должно, и я получаю следующее от NSLog ():
2010-09-21 11:39: 07.484 WhoAmI [4803: a0f] Звонок от РОДИТЕЛЯ: Родитель
2010-09-21 11: 39: 07.486 WhoAmI [4803: a0f] Звонок от РЕБЕНКА: Детский
В конечном счете, я хочуузнать - если возможно - как заставить Какао прекратить динамическое связывание, чтобы метод whoAmI всегда возвращал объект, в котором он находится (всегда Parent).Я также хочу, чтобы это был метод экземпляра.Как мне поступить так?
-Sean