让和内存分配

时间:2015-05-10 09:27:43

标签: ios swift

我在Swift中搜索Objective-C define等价物,很多人告诉我使用let

我需要在一个类中有很多常量,我需要从这个类中创建很多对象,所以我认为使用let代替define

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

1 个答案:

答案 0 :(得分:6)

通常,let应该比#define浪费很多内存(和其他资源)。因为想象你有

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

无处不在,您将使用SOME_PATH,它将重做计算并为其创建新的NSString *(加上一些临时的)。

使用

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

它将进行计算以完全一次构建字符串,并且它只需要一块内存(在构建字符串时会创建一些临时对象)被迅速丢弃的。)

因此,您可以根据需要随时使用let常量 #define d宏每次使用时都会产生费用。

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