|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你可能还需要学习使用Xcode这个开发环境,接著你需要掏钱向苹果注册开发者权限,基本的帐号是99美金。本视频为“斯坦福大学iPhone开发教程”,51CTO将不断关注本视频教程的更新进度,为大家提供最新的视频。关于敏感数据,我们不但愿长工夫放在内存中,而但愿利用完后当即就被开释失落。
可是不论是ARC仍是MRC,主动开释池也有轮循事情周期,我们都没法把持内存数据被擦除的正确工夫,让hackers们有隙可乘。
本文先容一个小技能——实时数据擦除。
假设一个ViewControllerA的一个数据被绑在一个property上,
- @interfaceWipingMemoryViewController:UIViewController
- @property(nonatomic,copy)NSString*text;
- @end
当Apush到别的一个ViewControllerB时,该数据仍是有大概被读到的
- WipingMemoryViewController*lastController=(WipingMemoryViewController*)self.navigationController.viewControllers[0];
- NSLog(@"text=%@",lastController.text);
因而,“用后即擦”变得非常需要:
- _text=[[NSStringalloc]initWithFormat:@"information"];
- NSLog(@"Origalstring=%@",_text);
- //dosomething...
- charchar*string=(charchar*)CFStringGetCStringPtr((CFStringRef)_text,CFStringGetSystemEncoding());
- memset(string,0,[_textlength]);
- NSLog(@"finaltext=%@",_text);
Log输入以下:
- WipingMemory[2518:70b]Origalstring=information
- WipingMemory[2518:70b]finaltext=
能够看到,我们想要回护的数据,被无效的擦除。
另有提个醒,假如是如许
创立的字符串,是会被分派到data区,而是没法修正的。
假如有乐趣也有闲心,能够尝尝运转上面的代码,有彩蛋哦:
- _text=@"information";
- memset((__bridgevoidvoid*)(_text),0,_text.length-1);
- NSString*myString=[[NSStringalloc]initWithFormat:@"information"];
- NSLog(@"Origaltext:%@n",myString);
编译器把两个information的省略到一个地点了~
在python中的函数__xxxNSString字符串NSArray数组NSDictionary字典这些都需要弄很清楚其他的类都是一个套路NSMutableArray这样带Mutable的类代表可变的 |
|