2016-12-05 3 views
0

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

Если я не получил ответ за 3 секунды, тогда этот метод не будет выполнен.

Использование кода:

Timer = [NSTimer scheduledTimerWithTimeInterval: 1.0 target: self selector:@selector(receiveMessageWebservice)userInfo: nil repeats:YES]; 

Это будет работать receiveMessageWebservice в 3 секунды интервала. Но проблема в том, что когда-то ответ не приходит через 3 секунды, требуется больше времени, тогда я получаю два или три ответа в одно и то же время.

Я не хочу этого.

Пожалуйста, помогите.

+0

Задайте значение BOOL в ответ, Когда ответ придет, измените его значение и вызовите метод receiveMessageWebservice в соответствии с значением bool. –

+0

okk, но дело в том, что этот метод будет вызываться через 3 секунды интервала. как это сделать –

+0

всякий раз, когда отклик не будет отменен таймером. –

ответ

0

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

Таким образом, вы можете успешно запустить запрос на обслуживание после каждого фиксированного интервала, не запрашивая несколько раз

0

Определенно, сетевые вызовы не могут быть время гарантировано. Как я полагаю, вы хотите повторить ответ, пока он не придет к вам.

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

Смежные вопросы