共享框架中的开放变量如何具有不同的值?

时间:2016-10-19 20:27:45

标签: ios uikit

根据我的理解,iOS设备上的标准框架(UIKit,AVKit等)本质上是动态共享库。

如果这些库在多个应用程序之间共享,那么开放变量(例如UIApplication.shared)如何为每个应用程序赋予不同的值?

我看到的唯一解决方案是,如果库是静态链接的,而不是动态的,或者共享库在应用程序中有自己的内存空间,并且在共享的系统内存的另一部分中没有堆空间

1 个答案:

答案 0 :(得分:0)

您所指的图书馆都是单身人士。也就是说,类的实例只实例化一次并且可以全局访问(在您自己的应用程序中)。

在这种模式中,类中的变量,比如UIApplication.shared,是一个懒惰的实例化UIApplication实例。由于这些库是用objective-c编写的,因此它们不会像这样创建,但在swift中它看起来像这样:

class UIApplication {

    static var shared = UIApplication()

}

对于您的问题,这意味着这些实例仅存在于您的应用程序中,在您调用UIApplication.shared时实例化,并在应用程序完成运行时被销毁。他们不与其他应用程序共享任何东西,否则一切都会破坏哈哈