保留对 mainScreen() 和 defaultManager() 类型函数返回值的引用是否可以优化任何内容?

Does holding a reference to values returned by mainScreen() and defaultManager() type functions optimize anything?

一些核心类使用一个函数来return它自己的一个实例:

NSFileManager.defaultManager()
PHImageManager.defaultManager()
UIScreen.mainScreen()
...

如果我将结果值赋给一个我使用了 n 次的变量,而不是仅仅调用函数 n 次,它会以某种方式提高性能吗?例如

let fileManager = NSFileManager.defaultManager();
fileManager.fileExistsAtPath(somePath)
fileManager.fileExistsAtPath(someOtherPath);

NSFileManager.defaultManager().fileExistsAtPath(somePath)
NSFileManager.defaultManager().fileExistsAtPath(someOtherPath);

let scale = UIScreen.mainScreen().scale;
let size = CGSizeMake(360 * scale, 720 * scale);

let size = CGSizeMake(360 * UIScreen.mainScreen().scale, 720 * UIScreen.mainScreen().scale);

你可以通过运行多次循环检查它并检查时差。
结果是相同的,因为 defaultManager()mainScreen() 正在返回一个指针,它与获取保存指针的变量相同,唯一 "costs" (并且它是非常快)是在两种情况下获得相同时间的内存单元。
顺便说一句,如果函数 returns a struct 那么 swift语言确实克隆了它,它可能很重。

func test(){
    print(NSDate())

    for i in 0..<30000{
        NSFileManager.defaultManager()
    }

    print(NSDate()) //12 seconds diff

    let test = NSFileManager.defaultManager()

    for i in 0..<30000{
        test
    }

    print(NSDate()) //12 seconds diff

}

test()