第52条:别忘了NSTimer会保留其目标对象 (Swift)

2015-10-29, Thu | Comments

在《Effective Objective-C: 编写高质量iOS与OS X代码的52个有效方法》一书中,第52条指出了NSTimer因为会保留其目标对象从而引入引用环的事实,并且给出了Objective—C版的解决方案来避免引用环。本文在这篇文章基础上给出了swift的实现方式,并且设计了一个新类简化了NSTimer的使用方式。

UITextField 限制输入字数解决方案

2015-09-10, Thu | Comments

本文提供了集中限制UITextField输入字数的方式,并针对中文联想词提供了解决方案。所用代码为Swift。

方法一:利用delegate实现

UITextFieldDelegate 提供了函数可以判断用户输入过程,demo如下

Ubuntu Install Phabricator

2014-12-19, Fri | Comments

背景

公司马上要部署新的version control system. 计划用Git。同时需要搭一套完整的环境,包括code review, permission control。暂时选定用Phabricator. 目前有很多公司在用Phabricator,facebook转战Hg的同时也开始用。而且同时支持git/hg/svn,如果将来公司用git不爽了想用Hg,那么前端可以基本不用更改。做了两个星期的调研到底要用git还是Hg,已经没力气继续了,干脆提供Phabricator,以防止将来高层反悔了,我们也方便移植。 开始用Bitnami一键安装了一个Phabricator server。结果发现Bitnami在安装时不可避免的更改了Phabricator的一些目录结构,导致后面升级更改都不方便。而且对于一键安装,作为一个系统管理员,最好避免这样偷懒,尤其是针对第三方提供的。一旦出问题就无从查起了。于是决定自己重搭环境。

Xcode6 - Devices Manager

2014-12-17, Wed | Comments

背景

今天用XCode6 建了一个工程,在编译的时候发现target只能选择’iOS Devices’,没有任何的simulator可以选择。如下图所示

在手动打开simulator的时候出现错误对话框“Unable to determine device.” 升级了mac os系统以及重装了XCode都不能解决。最后是通过Simulator的‘Device Management’ 解决的。

Nodejs: forEach vs For

2014-11-24, Mon | Comments

背景

今天想要用node.js实现一个小程序,程序任务是:遍历某folder下所有文件,打印出是File类型的文件的名字。Node最大的特征是异步非阻塞,所以程序中用到的fs函数,全部想用异步的调用

First Blog

2014-11-18, Tue | Comments

这是我的第一篇博客。之前一直懒于学习和积累。最近受到大牛的影响,明白学习是每个IT民工一生要持续的事情。子曰“学而时习之,不亦说乎”,一味的学习不做笔记记录很容易忘记。外加上本人记忆力一向很差,所以还是要找个地方记录一下的。 在接下来的日子里,我会主要focus在两个方面的学习上,iOS和Node.js