一、需求:
用户注册时,需要上传头像;
二、我最开始的写法:(错误的)
headBtn = [[UIButton alloc] init];(此处的UIButton可以换成UIImageView)
[headBtn setImage:[UIImage imageNamed:@"默认头像"] forState:UIControlStateNormal];
[headBtn addTarget:self action:@selector(uploadMainImage) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:headBtn];
[headBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(label.mas_bottom).offset(9*WX_VIEW_HEIGHT_RATIO);
make.centerX.equalTo(self.view);
make.width.height.equalTo(@(62 * WX_VIEW_WIDTH_RATIO));
}];
判空条件:
if([headBtn.currentImage isEqual:[UIImage imageNamed:@"默认头像"]]) {
[WXCommonUtil showHUDTips:@"头像不能为空" on:self.view];
return;
}
正常状态下没有问题,但是如果把APP推出到后台,然后重新进入APP,此时的判空条件是无效的。
三、原因:
[UIImage imageNamed:@"默认头像"],它是一个局部变量,在退出后台重新进入前台,它会被释放掉,然后生成一个新的默认头像,地址改变,导致判空失效。
四、合理的方案:
UIImageView *bgHeadImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"默认头像"]];
[self.view addSubview:bgHeadImage];
[bgHeadImage mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(label.mas_bottom).offset(9*WX_VIEW_HEIGHT_RATIO);
make.centerX.equalTo(self.view);
make.width.height.equalTo(@(62 * WX_VIEW_WIDTH_RATIO));
}];
//headBtn 不设置默认头像
//判空条件
if(headBtn.currentImage == nil) {
[WXCommonUtil showHUDTips:@"头像不能为空" on:self.view];
return;
}
完事。(如果大家有什么好的意见,可以沟通交流)
网友评论