Objective c 为什么swift语言不能提供nil来释放内存

Objective c 为什么swift语言不能提供nil来释放内存,objective-c,swift,Objective C,Swift,当我们在Objective-c中工作时,当我们想要解除分配或释放对象时,我们可以为ex:NSMutableArray*arr [arr removeAllObjects]; arr = nil; arr = [[NSMutableArray alloc] init]; 我们可以做这个和那个对象解除分配 那么为什么在swift语言中没有这样的方法呢 我们只能这样做: arr.removeAllObjects() arr = NSMutableArray() 我不明白对象如何以这种方式释放内存。

当我们在Objective-c中工作时,当我们想要解除分配或释放对象时,我们可以为ex:NSMutableArray*arr

[arr removeAllObjects];
arr = nil;
arr = [[NSMutableArray alloc] init];
我们可以做这个和那个对象解除分配

那么为什么在swift语言中没有这样的方法呢

我们只能这样做:

arr.removeAllObjects()
arr = NSMutableArray()

我不明白对象如何以这种方式释放内存。

首先,如果将变量声明为可选变量,可以将其设置为
nil


但是,使用ARC时,您不需要自己释放对象(这就是ARC的用途)。当您重置变量时,系统将为您处理内存。

正确的术语不是“将处理”,而是“应处理”,ARC并不完美。@AlessandroOrnano在什么情况下,当您重置变量时,ARC将不处理内存(调用
-释放
),除非您手动使其
无主
?@AlessandroOrnano我不能不同意您的意见,但让我们假设在这样一个简单的情况下它会起作用。否则你永远不会相信它。@kennytm去openradar搜索一些例子,spritekit中也会发生同样的事情。.谢谢你的评论,我需要你的帮助。请提供一些链接或参考资料,这样我就可以使用可选选项解决问题了。不需要行
arr=nil在您发布的Objective-C代码中。而且也没有必要在Swift中这样做。