Ожидание возврата функций обратного вызова в iOS / iPhone - PullRequest
0 голосов
/ 29 марта 2012

Мне нужно позвонить getValuesAndCalculate в моем приложении, которое должно вернуться только после выполнения своей работы.Однако для выполнения своей работы он должен получать записи с сервера, что должно быть сделано с помощью асинхронного вызова.Данные сервера принимаются через функцию обратного вызова.Таким образом, в getValuesAndCalculate мне нужно подождать, пока у меня есть данные, прежде чем приступить к вычислениям.Как мне это реализовать?

Ответы [ 3 ]

2 голосов
/ 29 марта 2012

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

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

0 голосов
/ 14 июля 2014

Вы можете реализовать темы для этого вопроса, т. Е.

// in main thread
// start activity indicator
NSThread *calculateThread = [[NSThread alloc] initWithTarget:self selector:@selector(getValuesAndCalculate) object:nil];
[calculateThread start];
// End of Main thread



- (void)getValuesAndCalculate
{
    // Perform transactions with server 
        [self performSelectorOnMainThread:@selector(continueMainThreadOperations) withObject:nil waitUntilDone:YES];
}

Вот так!

0 голосов
/ 29 марта 2012

Попробуйте использовать NSRunloop, пока не получите данные с сервера.

Например:

while (! IsFinished) { [[NSRunLoop currentRunLoop] runMode: NSDefaultRunLoopMode beforeDate: 1.0] }

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