这周在做数据库迁移(v1.sqlite to v2.sqlite,需求:更改数据库里面某个字段的值,数据库用的是coredata,在读取数据库、迁移是用的是FMDB)时,遇到一个比较奇怪的bug(其实一点都不奇怪,只怪自己图样图生破)。就是时间字段(coredata存储的是NSDate对象)迁移后的年份是1985年(比如:原数据库的时间是2016.2.26,而迁移后却是1985.2.26),百事不得其解……后面查到原因是因为Apple NSDate对象存储的时候不是以1970.1.1作为基准,而是以2001.1.1作为基准的,详情请看下面。
SDWebImage源码浅析
SDWebImage这个第三方库大家都不陌生吧,一个网络请求图片用的。其官方解释是:作为UIImageView的类别,支持缓存的异步下载图片。
它有一些特点:
一个带有管理网络图片下载和缓存的UIImageView类别
一个异步图片下载器
一个提供内存和磁盘缓存图片,并且能够自动清理过期的缓存
支持GIF
图片
支持WebP
图片后台解压图片
保证通一个URL
不会下载多次
保证假的URL
不会返回加载
保证主线程不会堵塞
高性能
使用GCD
和ARC
支持Arm64
这周所学新技巧(2)
博客已经两个月没有更新了,心里塞塞的。国庆节,把Objective-C高级编程:iOS与OS X多线程和内存管理看了一遍,其实这本书去年就买了,但是一直都放在柜子里冷藏中,这本书里面分析苹果源码的写的很好,里面很多东西都是从苹果官方网站摘要的,第一章”自动引用计数”大部分内容摘自Transitioning to ARC Release Notes。对于只有一点C、C++基础而直接接触iOS开发的我,开发中大部分都是从网上找资料,学的东西也是很零散,项目中需要什么就赶紧补什么,能够实现这个功能并且不出bug就行,原理方面的知道的很少,其实苹果官方网站和Xcode真的是学习的好工具,在苹果官方网站,你能系统的学到该知识点,用的时候能够说出个所以然来。在看文档的时候,对比自己项目中的代码,有违背apple开发文档的就改回来,这样对项目和自身都是有好处。所以,我打算多看看apple开发文档,记录一下那些快速消化技术点而遗漏的知识点。
UITextView中#话题#功能的简单实现
这周所学新技巧(1)
#前言
今天隔上一篇博文已经差不多有一个月了,感觉非常羞愧,因为这意味着我特么将近一个月里面没有学到新知识。其实呢,不是这样子的,做项目过程中肯定有遇到问题,也有解决问题,但是就是没有长记性,说白了点,就没有记下来。今天洗澡的时候,突然又创建了一句座右铭“你可以蠢,但是不能懒;你可以懒,但是不能没有责任感。”作为一个经常刷技术微博的我,肯定会学在大牛的博客里面了解到一点东西。“先转后看”,这就是我的原则。其实,这种想法、做法是非常浪费时间的,因为我平均一天要刷将近半个多小时的微博,在项目中很有可能会遇到以前在微博中看到过的东西,但是你还要去找啊找。就前几天,同事要做类似于黄易导航栏点击切换栏目的效果,我记得我有看到过,果不其然在微博中找到了它WMPageController,但如果时间隔很久,那我岂不是要找很久,这就是浪费时间啊!以前转发微博的时候,会@我的印象笔记,当然这比较容易搜索,但是东西多了,你总得要花点时间去找到自己想要的那个东西。所以吧,“好记性,不如烂笔头”,古人的话总没错。这又让我想起了我们家那边的老话,“出门带好下雨伞”,然后然后我就想起了前天周五湿身的感觉,fuck!!!幸亏有好心同事救济我。前几天在cc上面看到一篇文章如何坚持每周写一篇博客,个人觉得写地挺好的,一想到自己隔这么久没有写博客了,就感到非常羞愧,所以吧,要坚持!因为你是男人嘛。好了,废话了这么久,实在不像是一个程序猿,下面来扯扯这周所学到的新技巧。
(译)Debug,Beta,App Store版本的同时构建
图片打标签的一种实现方式
最近在项目有遇到图片打标签的需求,即在图片上面添加相关标签(标签可移动、删除),然后生成一张新的图片,上传到服务器上。下面就来谈谈我的实现方式吧,如果你有更好的方法,麻烦告诉我,THX。
###实现过程
我的思路是:Pan手势拖动标签;LongPress手势显示“删除”ItemMenu,点击删除item删除标签;新图片屏幕截图生成;图片展示在画布的方式自适应。首先将标签自定义一个View。
iOS开发中一些Debug方法
让UIImageView像UIButton那样点击
#前言
让图片可点击这个需求在项目中经常遇到,一般我会有两种做法。
- UIImageView + UITapGestureRecognizer
- UIButton setBackgroundImage
但是最近遇到这样一种需求:
- 图片可点击
- 图片数量多
- 能够获取Image对象
如果还用上面那两种方法的话,感觉有点蛋疼,于是自己就写了一个UIImageView的子类。