2017-03第三周

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

[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  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  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的简单配置规则:





HelloServlet



com.runoob.test.HelloServlet





HelloServlet



/TomcatTest/HelloServlet


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

你可能感兴趣的:(2017-03第三周)