Предотвратить методы дочернего класса от стрельбы? - PullRequest
1 голос
/ 04 марта 2011

Я уверен, что этот вопрос уже задавался ранее, но я искал и не смог его найти, поэтому заранее прошу прощения за дублирование контента на SO.

Как говорится: в Objective-C, впереопределенный метод, который вы можете вызвать метод родительского класса, используя что-то вроде [super methodName], но как предотвратить выполнение остальной части кода в дочернем классе от родителя?Это могло произойти, потому что сегодня пятница, но я смотрел на монитор несколько минут и не мог пройти мимо него в своей голове.

Пример (в детском классе):

- (void)methodName
{
    [super methodName];

    //Everything below this line shouldn't execute if tell it not to from the parent
    NSString *aString = @"This should never be called.";
}

Помощья вышел!Я знаю, что есть простое решение, но мой мозг просто не поднимает его сегодня ...

Ответы [ 2 ]

1 голос
/ 04 марта 2011

Возможно, у вас может быть другая функция, возвращающая True / False, которую вы используете, чтобы решить, хотите ли вы продолжить работу с оставшимся кодом в потомке. Эта «управляющая» функция может зависеть от переменной, установленной в родительском классе

Сказав это, это звучит как интересное требование для меня. Возможно, вам нужно еще раз взглянуть на дизайн и иерархию вашего класса.

0 голосов
/ 04 марта 2011

вы можете проверить тип объекта и определить, хотите ли вы или не хотите запускать дополнительный код, например:

if (![myObject isKindOfClass:[MyChildObject class]]
{
    //run only superclass code
}

Когда я пишу это, я не могу не задаться вопросом, если у вас нет проблем с настройкой ваших классов. Если ваш дизайн на высоте, вам не нужно проходить такие виды искажений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...