NSString 保留在内存中

NSString remains in memory

我一直在将输入的密码转换成NSString

NSString * tempStr = [[NSString alloc] initWithData: [[DummyEnc sharedInstance] decDummy] encoding: NSUTF8StringEncoding];
...
...

tempStr = nil

NSString 是必需的,因为 tempStr 处理其他逻辑。

但是有一个问题tempStr留在内存中,我该如何解决?

有什么方法可以将其用作 NSString

如果你想在ARC中释放tempStr的内存,不用管它,现代的llvm编译器会自动为你处理。

如果你想在使用完后立即释放内存,也许你需要为源文件指定一个-fno-objc-arc标志,那么你可以使用[tempStr release][tempStr autorelease]释放它。

祝你好运!

您所看到的是正常的。许多 NSStrings 在 Objective-C 中获得特殊的内存管理,这样当它们的保留计数变为零时,它们不会像普通对象一样被释放。实际上,它们是 故意 泄露的。

这是幕后实施细节,您通常不会担心(甚至不知道)。

如果这对您来说是一个安全问题(因为该字符串出现在内存转储中),请以其他方式存储该字符串,例如包装为 NSData。