2017-03第三周

作者: Code_Ninja | 来源:发表于2017-03-20 09:30 被阅读24次

    不积跬步,无以至千里;不积小流,无以成江海。——荀子

    [TOC]

    2017-03-13

    一、浮点数计算丢失精度问题

    一般计算机编程语言中对浮点数计算的时候都会丢失精度,比如5000.9 * 100 != 500090
    所以在计算浮点数的时候一定要谨慎一点,如果对精度要求比较高,可以使用NSDecimalNumber。


    2017-03-14

    一、UIButton的contentEdgeInsets、imageEdgeInsets和titleEdgeInsets到底该怎么用?

    • contentEdgeInsets:按钮的图片和文字一起进行偏移。
    • imageEdgeInsets:top,left,bottom都是相对于按钮的,right是相对于title。
    • titleEdgeInsets:top,bottom,right都是相对于按钮的,left是相对于image。

    来源:关于UIButton的UIEdgeInsets属性
    结合UIButton默认是图片在左,文字在右的显示规则来看,确实是这个道理。记住这个规则后,以后使用这些属性的时候就能快速做出自己想要的效果了。


    2017-03-15

    一、TCP/IP 系列之 Header 篇

    不得不承认在大学的时候学习的《计算机网络》早就忘完了,HTTP/TCP/IP相关技术点又是面试必备,得补习补习这方面的知识了。


    2017-03-16

    一、刷新UITableView时闪退问题

    今天在测试的时候发现环信聊天页面当信息发送失败后,点击重新发送时出现了异常闪退,友盟统计后台统计到错误原因是向数组中插入了nil。
    经排查发现以下环信demo的代码:

    EMChatViewCell *resendCell = [userInfo objectForKey:kShouldResendCell];
    
    MessageModel *messageModel = resendCell.messageModel;
    
    if ((messageModel.status != eMessageDeliveryState_Failure) && (messageModel.status != eMessageDeliveryState_Pending))
    
    {
    
       return;
    }
    
    id <IChatManager> chatManager = [[EaseMob sharedInstance] chatManager];
    
    [chatManager asyncResendMessage:messageModel.message progress:nil];
    
    NSIndexPath *indexPath = [self.tableView indexPathForCell:resendCell];
    [self.tableView beginUpdates];
    
    [self.tableView reloadRowsAtIndexPaths:@[indexPath]
    
                          withRowAnimation:UITableViewRowAnimationNone];
    
    [self.tableView endUpdates];
    

    根据友盟统计结果可以看到这里是indexPath为nil的情况下闪退了,而indexPathForCell:方法在目标cell不可见的时候会返回nil,成功定位bug!
    将代码修改如下:

    EMChatViewCell *resendCell = [userInfo objectForKey:kShouldResendCell];
    
    MessageModel *messageModel = resendCell.messageModel;
    
    if ((messageModel.status != eMessageDeliveryState_Failure) && (messageModel.status != eMessageDeliveryState_Pending))
    
    {
    
       return;
    
    }
    
    id <IChatManager> chatManager = [[EaseMob sharedInstance] chatManager];
    [chatManager asyncResendMessage:messageModel.message progress:nil];
    
    NSIndexPath *indexPath = [self.tableView indexPathForCell:resendCell];//cell不可见的时候会返回nil
    
    if(indexPath){
    
        [self.tableView beginUpdates];
    
        [self.tableView reloadRowsAtIndexPaths:@[indexPath]
    
                              withRowAnimation:UITableViewRowAnimationNone];
    
        [self.tableView endUpdates];
    
    }
    

    2017-03-17

    一、【收藏党】我的2017 iOS开发工具集
    分享的各种工具、博客、框架、网站资源非常丰富,信息量非常大,值得收藏。


    2017-03-18

    最近抽时间开始学习java,开始配置环境和学习JSP。
    在Mac环境下配置tomcat
    chmod 777 是什么意思?
    mac下Tomcat安装及启动,浏览器却打不开解决方案
    mac下tomcat的安装与配置


    2017-03-19

    今天在菜鸟教程上学习了怎么用Eclipse J2EE新建动态web项目(Dynamic Web Project)、怎么创建web.xml部署描述文件,了解了项目各个目录的作用。一步步学习了怎么新建jsp文件和servlet文件,以及web.xml的简单配置,以前学习java只是停留在java SE,希望以后能深入学习一下java EE。
    web.xml的简单配置规则:

    <servlet>
    
    <!-- 类名 -->
    
    <servlet-name>HelloServlet</servlet-name>
    
    <!-- 所在的包 -->
    
    <servlet-class>com.runoob.test.HelloServlet</servlet-class>
    
    </servlet>
    
    <servlet-mapping>
    
    <servlet-name>HelloServlet</servlet-name>
    
    <!-- 访问的网址 -->
    
    <url-pattern>/TomcatTest/HelloServlet</url-pattern>
    
    </servlet-mapping>
    

    更多配置:java web工程web.xml配置详解

    相关文章

      网友评论

        本文标题:2017-03第三周

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