Я пытаюсь получить фоновое обновление приложения, идущее в моем приложении iOS. Тем не менее, у меня есть некоторые проблемы с пониманием блоков кода.Назначить кодовые блоки объекту объекта c
Я провел некоторое исследование по этому вопросу и сказал бы, что у меня есть понимание начинающего. Этот метод является следующим:
-(void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
Этот метод требует типа возврата UIBackgroundFetchResult. Из-за сложности моего приложения, однако, я не могу вернуть это с легкостью. Многое происходит, когда вы извлекаете данные из Интернета в фоновом режиме.
В теле этого метода у меня есть собственный метод, который также имеет блок завершения. То, что я пытаюсь сделать, это определить другой пользовательский метод в моем коде, который будет назначен обработчику завершения.
В моем менеджер данных, я это свойство, определяемые как:
@property (copy, nonatomic) void (^fetchCompleted)(UIBackgroundFetchResult);
В реализации метода performFetchWtihCompletionHandler я призываю мой менеджер данных:
-(void)fetchNewDataWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
_fetchCompleted = completionHandler;
_state = DMSMT_WaitingForPartnerData;
[self getActiveQueues];
}
После того, как мои загрузки завершены, я позвоните по методу fetchCompleted:
[self fetchCompleted];
В этом моя точка зрения oblem. Мне нужно передать аргумент UIBackgroundFetchResult, но я не вижу возможности сделать это. Я попробовал [self fetchCompleted: UIBackgroundFetchResultNewData]; но он кричит на меня.
Любые идеи?
Заранее спасибо.
EDIT:
Здесь был затруднительным. Так просто!
if(_fetchCompleted != nil){
[self fetchCompleted](UIBackgroundFetchResultNewData);
}
Спасибо! Это отлично поработало. Я ненавижу, когда это такая простая проблема синтаксиса! ugh – Salx