今天使用removeFromSuperview的时候发现他的实质并不是将这个视图从内存中移除。而且将一个视图从他的父视图上删除。大家需要了解计算机删除的本质,标记删除,当你删除一个东西的时候,系统只是将这块内存做了一个标记,表示目前无人使用,但是之前视图的内存地址存在。所以如果想让视图不存在,需要在移除之后置为nil。
strType参数区分解绑和绑卡,之前以为移除重新创建了,结果亲测发现解绑和绑卡两处action都是一个结果,必须要置空对象为nil后,才是重新创建的。
-(void)showPayView:(NSString *)strType{
//有多个弹框时候 要保证每次是唯一对象
if (_payView) {
[_payView removeFromSuperview];
_payView=nil;
}
if (!_payView) {
_payView = [[YFPayView alloc] init];
__weak typeof(self)weakSelf = self;
_payView.payViewConformBlock = ^(NSString *getOutput1){
_getOutput1 = getOutput1;
if([strType isEqualToString:@"unBind"]){
[weakSelf getDeleteBankCard];
}
else if([strType isEqualToString:@"Bind"]){
[weakSelf addBankCard];
}
};
_payView.payViewCancelBlock = ^(){
};
_payView.payViewForgetPwdBlock = ^{
//支付密码重置
YFModifyPwdViewController *vc = StoryboardName(@"YFModifyPwdViewController");
vc.step = StepType_MobileConform;
vc.title = @"支付密码重置";
[weakSelf.navigationController pushViewController:vc animated:YES];
};
}
[self.view addSubview:_payView];
}