我如何使用 ReactiveCocoa/RACSignal 到 "RACify" 像 didFinishLaunchingWithOptions 这样的 UIApplicationDelegate 生命周期事件?

How might I use ReactiveCocoa/RACSignal to "RACify" a UIApplicationDelegate lifecycle event like didFinishLaunchingWithOptions?

我想知道如何使用 ReactiveCocoa 库来 RAC-ify UIApplicationDelegate 生命周期事件。

因为最重要的是 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions,对我来说这似乎是一个合乎逻辑的起点。

如果我理解正确的话,基本的想法是创建一个 RACSignal 来封装事件(应用程序使用这些选项完成启动),通过管道串行发送或并行发送到多个"application start handlers" 然后合并它们的所有输出 - 如果是串行的,那么只有当每个 returns YES 时才继续,如果是并行的,if (handler1 == YES && handler2 == YES ...) - 然后 return 合并实际 UIApplicationDelegate.

中的响应

但是,我不清楚如何实现这一点的确切细节 - 这可能从我的提问中可以明显看出。

任何示例,无论是真实代码还是伪代码,都将不胜感激。对我(可能还有其他人)来说,它有双重目的:1) 所述的目的,以及 2) 提供一个示例,说明如何 RAC-ify 一个非 UI 驱动的事件(好吧,这甚至不完全正确,但我想你明白我的意思了)。

我发现我可以使用 signalForSelector 仔细包装委托方法。

我从 this answer 那里学到了在 设置委托之前使用 rac_signalForSelector

对于UIApplicationDelegate,它可能会更复杂一些,因为我们通常不会直接设置UIApplication delegate,而是在[=15]中指定一个class =] 文件在 Objective-C 或 main.swift in the case of Swift.

的情况下

不过,我相信如果在 AppDelegate class 本身中完成设置,并在 main 文件中分配,这将满足上述要求。

另一种选择是将方法添加到新 Objective-C 类别的接口或 Swift 扩展 UIResponder subclass.

An example can be found here.