У меня есть следующий код:Перезапустите непустую функцию
- (NSString*)returnIncorrectDef {
NSInteger defIndex = [self randomIndex];
NSString *incorrectDef = [NSString stringWithFormat:@"%@", [definitions objectAtIndex:defIndex]];
if (([incorrectDef isEqualToString:self.definitionString]) || ([incorrectDef isEqualToString:def1.titleLabel.text])) {
// I want to restart the method here
[self returnIncorrectDef];
} else {
return incorrectDef;
}}
Я хочу, чтобы иметь возможность перезапустить этот метод до тех пор, если положение не не соблюдается. Однако, когда я пытаюсь выполнить этот код, я получаю сообщение об ошибке: «Контроль может доходить до конца не-void-функции». Как мне это сделать?
Определение «перезагрузка». У вас есть рекурсивный вызов, но он не возвращает результат, следовательно, сообщение об ошибке. Вы могли бы просто добавить 'return' перед' [self returnIncorrectDef]; ', но вы рискуете« бесконечной »рекурсией. Было бы разумнее просто окружить тело цикла контуром, который будет только выйти, когда будут выполнены ваши условия выхода. –
(Хотя петлевый подход почти наверняка приведет к «бесконечному циклу». Но по крайней мере он не потерпит крах.) –
... но приложение будет безответственным и «зависает» (если это ничуть лучше, чем авария). Поэтому вставьте код в свой код – Mario