1

Мне интересно, как я могу использовать библиотеку ReactiveCocoa до RAC -ify UIApplicationDelegate события жизненного цикла.Как я могу использовать ReactiveCocoa/RACSignal для «RACify» события жизненного цикла UIApplicationDelegate, например didFinishLaunchingWithOptions?

Поскольку наиболее важным является - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions, это похоже на логическое место, чтобы начать со мной.

Основная идея, если я правильно понимаю, - создать RACSignal, который будет инкапсулировать событие (завершение запуска приложения с этими параметрами), отправить его либо последовательно по конвейеру, либо параллельно нескольким «обработчикам запуска приложений», а затем объединить все их выходы - если они серийно, то продолжаются только тогда, когда каждый возвращает YES, если параллельно, if (handler1 == YES && handler2 == YES ...) - а затем return комбинированный отклик в фактическом UIApplicationDelegate.

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

Любые примеры, как в реальном коде, так и в просто псевдокоде, были бы весьма признательны. Это для меня (и, возможно, других) служит двойной цели: 1) заявленный и 2) привести пример того, как RAC -извести событие, не связанное с UI (ну, это даже не совсем так, но я думаю, вы понимаете, что я имею в виду).

ответ

0

Я понял, что я мог бы обернуть методы делегата с помощью signalForSelector.

Я узнал от this answer для использования rac_signalForSelectorдо установка делегата.

Для UIApplicationDelegate это потенциально немного сложнее, потому что мы обычно не устанавливается UIApplicationdelegate непосредственно, но вместо того, чтобы указать класс в файле main.m в случае Objective-C или в main.swiftin the case of Swift.

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

Другим вариантом является добавление методов к интерфейсу новой категории Objective-C или расширения Swift к подклассу UIResponder.

An example can be found here.

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