Как я могу отложить вызовы метода? - PullRequest
0 голосов
/ 31 октября 2010

Я хочу иметь возможность вызывать метод, а затем либо дождаться, пока метод завершит свою работу, а затем вызвать следующий вызов метода, ИЛИ вызвать метод, подождать определенное количество времени, а затем вызвать следующий метод.

Есть мысли о том, как мне это сделать?

Пример:

[self method1];
//wait for method1 to finish whatever it's doing then move onto the next line
[self method2];

ИЛИ

[self method1];
//wait say, 500ms then move onto the next line
[self method2];

Ответы [ 3 ]

1 голос
/ 31 октября 2010

Если вы хотите убедиться, что метод завершил делать то, что он делает, почему бы не

a) вызвать метод2 в конце метода1

или

b) пойти с executeSelectorOnMainThread: withObject: waitUntilDone: как предложено Дениз Мерт Единчик

или

c) Отправить NSNotification в конце method1 для запуска метода 2 (вы можете добавить наблюдателя для этого уведомленияв method1 и удалите его снова в method2, если method1 также вызывается в другом месте и вы не хотите, чтобы method2 запускался каждый раз)

Вы не должны работать с afterDelay, полагаясь на любую задержку, которую вы укажете ...

1 голос
/ 31 октября 2010
0 голосов
/ 31 октября 2010

Разбейте ваш код пополам (например, на несколько методов).

    ...
    [self method1];
    return;
}

- (void) secondHalf {
    [self method2];
    ...

Чтобы дождаться окончания метода method1, выйдите / выйдите / вернитесь из своей первой части кода обратно в цикл выполнения.Пусть кто-нибудь еще запустит вторую половину вашего метода (уведомление, делегирование, таймер и т. Д.).Сохраните все необходимые локальные переменные или другое состояние в переменных экземпляра.

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