2016-03-30 2 views
1

Я предрек метод следующим образом:блок не получает казнены

- (void)downloadCSVs:(void (^)(void))completion 

Его тело:

- (void)downloadCSVs:(void (^)(void))completion 
{ 
     [[Singleton sharedData] downloadCSVFilesFromServer:<MY_URL>]; 
} 

и вызывать этот метод как:

[self downloadCSVs:^ 
{ 
     NSLog(@"Download Completed!"); 
}]; 

Но его AFTER скачать, он не выполняет NSLog. Пожалуйста, дайте мне знать, где я ошибаюсь.

+1

вам необходимо завершить вызов(); in side downloadCSVs: функция реализация. Или передать блок завершения в другую функцию или свойство завершение вызова(); когда вся задача выполнена. – larva

+0

@A Бао Да Бао! Я сделал то же самое, и теперь он работает! Спасибо за Ваш ответ! :-) – Developer

ответ

3

Ваш блок не вызывается, поскольку его не назовешь.

Следующий метод принимает блок в качестве параметра и, в свою очередь, вызывает [Singleton downloadCSVFilesFromServer:], но она не проходит блок к этому методу и не называет его сам:

- (void)downloadCSVs:(void (^)(void))completion 
{ 
    [[Singleton sharedData] downloadCSVFilesFromServer:<MY_URL>]; 
} 

Вам необходимо продлить [Singleton downloadCSVFilesFromServer:] метод, чтобы принять параметр блока и вызвать его, когда он будет завершен.

+0

Спасибо за ответ. Он работает сейчас, поскольку я не вызывал блок явно. Я думал, что это будет вызвано само собой, как я назвал метод. Но не могли бы вы объяснить, что вы имели ввиду --------------- Вам нужно расширить метод [Singleton downloadCSVFilesFromServer:], чтобы принять параметр блока --------- ----------------? – Developer

+0

@Developer Вам необходимо добавить параметр «завершить» к этому методу и вызвать его при завершении. Я предполагаю, что это асинхронный метод? – trojanfoe

+0

Нет его синхронного метода, но позже я сделаю его асинхронным. Не могли бы вы сообщить мне синтаксис ------------------- Вам нужно добавить параметр завершения к этому методу ------------ ----. Я думаю, что я уже добавил это в объявлении моего метода. Можете ли вы проверить один раз? – Developer