美文网首页
Bug-小记(贵金属)

Bug-小记(贵金属)

作者: 秋儿Luckyfy | 来源:发表于2016-08-16 16:43 被阅读22次

title: Bug 小记(贵金属)

date: 2015-11-20 11:13:33

categories: iOS

tags: [Bug,贵金属]

作者:秋儿(lvruifei@foxmail.com

最近在修复 APP 的 Bug,遇到了几个因对 SDK 不熟 造成的 Bug。如下:
</br>


Bug1:点击获取验证码后,没有进行倒计时,且不能再次点击

使用 GCD 写的倒计时,源代码:

_isCountDown = YES;
__block int timeout=kCountdownTime; //倒计时时间
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);
dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行
dispatch_source_set_event_handler(_timer, ^{
    if(timeout<=0){ //倒计时结束,关闭
        dispatch_source_cancel(_timer);
        dispatch_async(dispatch_get_main_queue(), ^{
            [self.getSmsCodeBtn setTitle:@"重新获取" forState:UIControlStateNormal];

            [self.getSmsCodeBtn setTitleColor:ColorWithHexString(GJS_COLOR_LOGINBTN_AVAILABLE_NORMAL) forState:UIControlStateNormal];
            
            [self.getSmsCodeBtn setEnabled:YES];
            _isCountDown = NO;
        });
    }else{
        NSString *strTime = [NSString stringWithFormat:@"%ds后重发",timeout];
        dispatch_async(dispatch_get_main_queue(), ^{
            [self.getSmsCodeBtn setTitle:strTime forState:UIControlStateNormal];

            [self.getSmsCodeBtn setTitleColor:ColorWithHexString(GJS_COLOR_GETCODEBTN_UNAVAILABLE) forState:UIControlStateNormal];
        });
        timeout--;
        
    }
});
dispatch_resume(_timer);

如上所示的源码,在 iOS7 上倒计时按钮上的文字不会变化,在 iOS 8,iOS9 上都是没问题的,我也郁闷了很久。各种百度未果后转向 Google,也有人遇到这样的问题,但是只搜索到一篇真正能解决这个问题的文章 http://blog.csdn.net/zhangyanshen/article/details/46910515

<font color=green>解决方案:</font>

[sendAuthCodeBtn setTitle:@"发送验证码" forState:UIControlStateDisabled]; 

关键在于这行代码。设置了禁用状态下的文字。顺利解决了 这个 Bug。
</br>

Bug2:倒计时 UIButton 上的文字变更会有闪烁效果

UIButton 设置 title时会闪烁。

<font color=brown>原因:</font>UIButton 的 buttonType 是 System 类型时会出现该种问题

<font color=green>解决方案:</font>UIButton 的 buttonType 设置为 Custom 类型时不会出现闪烁。
</br>

Bug3:在工程中添加plist 文件,用代码对其进行写入操作,在模拟器中按代码执行,但在真机上plist中内容未改变

plist 文件中是一个数组,元素是多个字典,在模拟器上运行一切正常,但测试人员用真机测试时发现问题,无法写入到 plist 文件中。

<font color=brown>原因:</font> 打包在 ipa 的文件是无法更改的。一句话:无权限修改(知道真相的我眼泪掉下来~),只可进行读取操作。

<font color=green>解决方案:</font>在 app 启动的时候判断是否在 Document 文件夹下存在相同的 plsit 文件。 不存在,获取沙盒下 plist 文件中的内容,并写入Document 文件夹下的 plsit 文件。存在则不做任何处理。(之所以选择这种方式而不选择直接将内容用代码写入 Document 文件夹下来解决这个问题,是因为个人认为在开发时方便对工程中plsit 文件内容的更改)
</br>

<font color=pinkw>更新时间:2016年1月20日</font>

Bug1:进入某个页面,App崩溃,崩溃原因是:[NSCFType set]: unrecognized selector sent to instance 0x4d80b00'

<font color=brown>原因:</font> 在新页面使用了NSMutableAttributedString,使用方式导致了崩溃,目前无法解释,使用方法如下:

NSMutableAttributedString *attriString = [[NSMutableAttributedString alloc] initWithString:prodNameStr]; [attriString addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:16.0] range:NSMakeRange(2, 2)]; [attriString addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(2, 2)];

<font color=green>解决方案:</font>

NSMutableAttributedString *attriString = [[NSMutableAttributedString alloc] initWithString:prodNameStr];
[attriString setAttributes:@{NSFontAttributeName : [UIFont systemFontOfSize:12.0], NSForegroundColorAttributeName:ColorWithHexString(GJS_COLOR_TEXT_GRAY)} range:NSMakeRange(prodNameStr.length - time.length, time.length)];`

相关文章

  • Bug-小记(贵金属)

    title: Bug 小记(贵金属) date: 2015-11-20 11:13:33 categories: ...

  • 周记:2019年第31周(7.29—8.4)

    1 工作: 没啥新意,一直在测试-发现bug-解决bug-继续测试的循环中 2 学习: 《Deep Le...

  • 《前端之提交效率》关于减少代码量的方法

    从入行到现在也有几年了,刚入门的时候总能感受到自己的技术在提升,到现在的每天写bug->改bug->写bug的循环...

  • 2020-04-27

    贵金属投资,你必须学的知识(一) 贵金属是什么: 贵金属主要指...

  • 十点理财--贵金属

    贵金属能不能投资?贵金属,我们教室里现在有996个人了。争取过千了。好,我问大家,贵金属能不能碰,好,贵金属,有人...

  • 2018-05-10

    //解决wkwebView在iOS 10+/11+ 系统下显示不全的bug-(void)scrollViewDid...

  • Bug-遇见-iOS

    加载xib 崩溃 1.正确的加载xib的方式加载ViewController 加载UIView

  • 吴军聊投资的笔记

    这些投资知识是最基础最需要认真学的。 投资的误区: 1、贵金属只有避险的功能,但是仅限于实物贵金属,贵金属之所以没...

  • 吴军聊投资的笔记

    这些投资知识是最基础最需要认真学的。 投资的误区: 1、贵金属只有避险的功能,但是仅限于实物贵金属,贵金属之所以没...

  • Android 热修复、插件化、组件化、 增量更新概念理解

    Android热修复 正常项目开发流程:版本1.0上线-》 用户安装-》 发现bug-》 紧急修复-》 重新发布版...

网友评论

      本文标题:Bug-小记(贵金属)

      本文链接:https://www.haomeiwen.com/subject/mhvpsttx.html