Как вернуть результат асинхронного json-запроса

, как работает transform:

  1. ваш элемент получает визуализированный
  2. ваш элемент преобразуется (перемещается, поворачивается, масштабируется)
  3. other элементы остаются там, где они оказываются - вокруг «оригинального элемента»

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

You должен использовать width и height в CSS, если вы хотите визуализировать размер элементов по-разному и отвечать на него окружающими элементами.

Или вы можете использовать что-то вроде javascript для изменения размеров.

-1
задан user6631314 7 March 2019 в 00:19
поделиться

1 ответ

Вы можете передать блок асинхронной функции и затем вызвать его при вызове обработчика завершения сеанса URL. Это тривиальный пример:

- (void)doSomethingWithBlock:(void (^)(double, double))block {
    ...
    block(21.0, 2.0);
}

Я поднял этот ^^ из Apple Docs , но вы можете сделать что-то вроде этого: (Примечание: я не проверял это в компиляторе!)

-(void)getAsyncAnswerFor:(NSString*) str completion:(void (^)(NSData, NSURLResponse, NSError))block {
    NSString *surl = [NSString stringWithFormat: @"https://~.com//api.php?q=%@",str];
    NSURL *url = [NSURL URLWithString:surl];
    NSURLSessionDataTask *downloadTask = [[NSURLSession sharedSession]
                                          dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
                                             block(data, response, error);
                                          }];

    [downloadTask resume];
}

Вам нужно быть осторожным, если вы попытаетесь сослаться на self в любом месте блоков.

0
ответ дан Aaron 7 March 2019 в 00:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: