NSString remains in memory

时间:2018-07-25 05:13:57

标签: objective-c memory-management nsstring

I have been converting the entered password into NSString.

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

tempStr = nil

NSString is required because tempStr handles other logic.

But there is a problem that tempStr remains in memory, how do I fix it?

Is there a way I would like to use it as an NSString?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

如果要在使用完内存后立即释放内存,则可能需要为该源文件指定一个-fno-objc-arc标志,然后可以使用[tempStr release][tempStr autorelease]进行释放它。

尝试一下!