gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 06:56:20 24 4
gpt4 key购买 nike

一些核心类使用函数返回其自身的实例:

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() 返回一个指针,这与获取保存指针的变量相同,唯一的事情“成本”(而且速度非常快)是在两种情况下获取相同时间的内存单元。
顺便说一句,如果一个函数返回一个 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()

关于xcode - 保留对 mainScreen() 和 defaultManager() 类型函数返回值的引用是否可以优化任何内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33506707/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com