我有一个包含敏感数据的NSData对象。当操作完成时,我想擦除内存以避免任何潜在的安全问题。在Objective-C中,这很简单。我可以打电话给。。。

memset([mySensitiveData bytes], 0, [mySensitiveData length]);

然而,在Swift中,它并没有那么简单。我试过同样的方法。。。
memset(mySensitiveData.bytes, 0, mySensitiveData.length)

…但是,我得到一个编译器错误说。。。
'UnsafePointer<Void>' is not convertible to 'UnsafeMutablePointer<Void>'

你知道怎么绕过这件事,迅速安全地抹去记忆吗?谢谢!!

最佳答案

NSData是不可变的,所以它使用UnsafePointer<Void>作为字节指针。
您应该为此使用NSMutableData,然后只需调用:resetBytesInRange(NSMakeRange(0, mySensitiveData.length))。此方法将用零替换内容,正如memset所做的那样。

关于objective-c - 在Swift中删除NSData内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25648063/

10-13 03:35