我正在搜索 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
常量。 #define
d 宏在您每次使用时都会产生成本。
请记住,您可以在全局范围内使用 let
。所以 let
不仅可以在函数或类中工作,您还可以使用 let
定义一个全局常量。
关于ios - 让和内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30149777/