ios - 让和内存分配

标签 ios swift

我正在搜索 Swift 中的 Objective-C define 等效项,很多人告诉我使用 let

我在一个类中需要很多常量,我需要从这个类中创建很多对象,所以我认为使用 let 而不是 define< 会浪费太多内存

我错了吗?也许 let 以不同的方式工作。 有没有办法在不浪费内存的情况下实现这一目标?

最佳答案

通常,let#define 浪费更少 内存(和其他资源)。因为想象你有

#define SOME_PATH [[[@"/" stringByAppendingPathComponent:@"foo"] stringByAppendingPathComponent:@"bar"] stringByAppendingPathComponent:@"buz"]

任何地方,你都会用到SOME_PATH,它会重做计算并为此创建一个新的NSString *(加上一些临时的) ).

通过使用

let SOME_PATH = "foo".stringByAppendingPathComponent("bar").stringByAppendingPathComponent("buz")

它会进行计算以一次构建字符串并且它只需要一 block 内存(在构建字符串的同时会创建一些临时对象很快就被丢弃了)。

因此,您可以根据需要随时免费使用let常量。 #defined 宏在您每次使用时都会产生成本。

请记住,您可以在全局范围内使用 let。所以 let 不仅可以在函数或类中工作,您还可以使用 let 定义一个全局常量。

关于ios - 让和内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30149777/

相关文章:

ios - App Tracking Transparency 如何影响显示广告的应用程序? - IDFA iOS14

ios - 这是什么错误信息? ( objective-C )

ios - 如何使用 Swift 获取 LAC 和/或 CellID

ios - 覆盖协议(protocol)泛型方法

IOS Reveal View - 在另一个 UIViewController 中触发函数

objective-c - UISegmentedControl - 更改颜色和大小 - 无法正常工作

ios - 点击手势以使用 TableView 关闭 UITextField

ios - 无法创建日志目录

ios - 如何将这个 objective-c 转换为 swift

swift - SceneKit是否旋转(按:around:duration:) works?