_text=[[NSStringalloc]initWithFormat:@"information"];NSLog(@"Origal string = %@",_text);//do something... charchar*string=(charchar*)CFStringGetCStringPtr((CFStringRef)_text,CFStringGetSystemEncoding());memset(string,0,[_textlength]);NSLog(@"final text = %@",_text);
Log 输出如下:
WipingMemory[2518:70b] Origal string = information
WipingMemory[2518:70b] final text =
可以看到,我们想要保护的数据,被有效的擦除了。
还有提个醒,如果是这样
_text = @"information";
创建的字符串,是会被分配到 data 区,而是无法修改的。
如果有兴趣也有闲心,可以试试运行下面的代码,有彩蛋哦:
1234
_text=@"information";memset((__bridgevoidvoid*)(_text),0,_text.length-1);NSString*myString=[[NSStringalloc]initWithFormat:@"information"];NSLog(@"Origal text : %@ \n",myString);