在金融行业的APP中,对于敏感数据,我们不希望长时间存放在内存中,而是希望使用完后立即就被释放掉。在一些场景中,比如当View ControllerA push到 另外一个View Controller B时,由于A 页面依旧存活,导致数据不会被清理,这就增加了数据被非法获取的风险。
1.假如一个View Controller A的一个数据被绑在一个property上,
@interface ViewControllerA : UIViewController
@property (nonatomic, copy) NSString *text;
@end
当A push 到B时,在B中
ViewControllerA *vcA = (ViewControllerA *)self.navigationController.viewControllers[0];
NSLog(@"vcA .text == %@", vcA.text);
是可以访问到text中数据的.
- 在A中添加如下处理,即可清理掉属性绑定的数据:
self.text = [[NSString alloc]initWithFormat:@"aaaaaaaaa"];
char *string = (char *)CFStringGetCStringPtr((CFStringRef)_text, CFStringGetSystemEncoding());
memset(string, 0, [_text length]);
BViewController *B = [BViewController new];
[self.navigationController pushViewController:B animated:YES];
- 如果字符串采用这种方式,是会被分配到data区,是无法修改的。
self.text = @"aaaaaaaaa";
参考:
https://blog.csdn.net/yiyaaixuexi/article/details/18669201
网友评论