根据我的理解,iOS设备上的标准框架(UIKit,AVKit等)本质上是动态共享库。
如果这些库在多个应用程序之间共享,那么开放变量(例如UIApplication.shared)如何为每个应用程序赋予不同的值?
我看到的唯一解决方案是,如果库是静态链接的,而不是动态的,或者共享库在应用程序中有自己的内存空间,并且在共享的系统内存的另一部分中没有堆空间
答案 0 :(得分:0)
您所指的图书馆都是单身人士。也就是说,类的实例只实例化一次并且可以全局访问(在您自己的应用程序中)。
在这种模式中,类中的变量,比如UIApplication.shared,是一个懒惰的实例化UIApplication实例。由于这些库是用objective-c编写的,因此它们不会像这样创建,但在swift中它看起来像这样:
class UIApplication {
static var shared = UIApplication()
}
对于您的问题,这意味着这些实例仅存在于您的应用程序中,在您调用UIApplication.shared时实例化,并在应用程序完成运行时被销毁。他们不与其他应用程序共享任何东西,否则一切都会破坏哈哈