上传头像遇到的坑

一、需求:

用户注册时,需要上传头像;

二、我最开始的写法:(错误的)

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;
}

完事。(如果大家有什么好的意见,可以沟通交流)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容