可以在运行时更改 AppDelegate

Posted

技术标签:

【中文标题】可以在运行时更改 AppDelegate【英文标题】:Possible to change AppDelegate at runtime 【发布时间】:2015-02-11 21:08:20 【问题描述】:

是否可以在运行时将 UIApplication.delegate 属性更改为另一个实现 UIApplicationDelegate 协议的类,以便从那时起在新类上调用 UIApplicationDelegate 函数?

【问题讨论】:

这样做有什么好处?你想对每个委托方法有几个不同的实现吗? 你尝试的时候发生了什么? 这个想法是让应用程序加载应用程序中定义的普通应用程序委托,但随后在某些时候(可能在启动后立即)能够切换到动态库中定义的新 AppDelegate框架(使用 xcode6/ios8 中新提供的支持)。我还没有访问框架,所以我没有尝试过,但很快就会! @stonedauwg 你能解决这个问题吗?我正在尝试类似的东西并在运行时切换 appDelegate 但它崩溃了。 【参考方案1】:

您可以使用[UIApplication sharedApplication].delegate = instanceOfDifferentClass 非常简单地更改它。

【讨论】:

尚未尝试使用基于框架的 UIApplicationDelegate 类(如 orig 预期),但基本工作如 @AdamPro13 所说

以上是关于可以在运行时更改 AppDelegate的主要内容,如果未能解决你的问题,请参考以下文章

可以在运行时更改 AppDelegate

springaop动态加载不同类

是否可以在应用程序运行时更改应用程序图标

在运行时更改访问修饰符

有啥方法可以在运行时更改 ios 上推送通知的权限?

在运行时更改自动布局