NSTimer会保留其目标对象

来源 ——《Effective Objective-C 2.0 》Matt Galloway

计时器是一种很方便的对象。Foundation 框架中有个类叫做NSTimer,开发者可以指定绝对的日期和时间,以便到时执行任务,也可以指定执行任务的相对延迟时间。计时器还可以重复运行任务,有个与之相关联的”间隔值”(interval)可用来指定任务的触发平绿。比方说,可以每5秒轮询某个资源。
计时器要和”运行循环”(run loop)相关联,运行循环到时候回触发任务。创建NSTimer时,可以将其预先安排在当前的运行循环中,也可以先创建好,然后由开发者自己来调度。无论采用哪种方式,只有把计时器放在运行循环里,它才能正常触发任务。例如,下面这个方法可以创建计时器,并将其预先安排在当前运行循环中:

用此方法创建出来的计时器,会在指定的间隔时间后执行任务。也可以令其反复执行任务,直到开发者稍后将其手动关闭为止。target与selector参数表示计时器将在哪个对象上调用哪个方法。计时器会保留其目标对象,等到自身失效时再释放此对象。调用invalidate方法可令计时器失效;执行完相关任务之后,一次性的计时器也会失效。开发者若将计时器设置成重复执行模式,那么必须自己调用invalidate方法,才能令其停止。 继续阅读NSTimer会保留其目标对象

使用git管理svn托管的项目(Mac)

遇到一种情况,团队的项目是使用svn管理的,但是我又习惯用git管理,开多个分支,同步开发,而且没有完成的东西不想上传到服务器,于是,问题来了,我想用git来管理已经被svn托管的项目

cd 到svn目录下,git init,初始化本地的repo,然后vi .gitignore文件 添加

保存退出

然后到github创建远程仓库,记得是直接创建,不要自动生成其他内容,拷贝git@github.com:HongliYu/XXX.git
在本地添加远程仓库

检查是否已经成功添加

把本地项目推到github

接着是svn也要添加ignore,因为在目录下已经有git的东西了,对吧

找到global-ignore在global-ignores 末尾加上.git .gitignore,我的是这样的:

OK,现在可以把git下的dev分支,推送到远端,换台电脑继续干,或者dev分支在本地走标准的git workflow也行,每次svn update以后记得checkout到master,feature开发完以后merge到master分支

Tips: 当git status出现UserInterfaceState.xcuserstate,每次需要更新,好吧,gitignore无效,要这么做