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
?
答案 0 :(得分:1)
您看到的是正常现象。许多NSString在Objective-C中获得了特殊的内存管理,因此当它们的保留计数变为零时,它们不会像普通对象那样被释放。实际上,它们是故意泄漏的。
这是一个幕后实施细节,您通常不必担心(甚至不知道)。
如果这对您来说是一个安全性问题(因为该字符串显示在内存转储中),请以其他方式存储该字符串,例如包装为NSData。
答案 1 :(得分:0)
如果您想在 ARC 中释放tempStr
的内存,就不用理会了,现代的llvm编译器会自动为您处理它。
如果要在使用完内存后立即释放内存,则可能需要为该源文件指定一个-fno-objc-arc
标志,然后可以使用[tempStr release]
或[tempStr autorelease]
进行释放它。
尝试一下!