Hello World

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Lire plus

Install Hexo

安装前提

  • Git
  • Node.js

Lire plus

Git 常用命令及使用场景

本文只写git命令相关内容,git安装及配置https://git-scm.com/、github如何创建repository、添加ssh等,请到https://help.github.com/

Lire plus

British Shorthair

British Shorthair

Lire plus

Mac Keyboard shortcut

建议:System->键盘->修饰键->caps lock 改为control
shift+command+O 快捷搜索
shift+command+F 全局搜索
shift+command+J 跳到当前文件目录位置
shift+command+C 跳到控制台
command+K 清空控制台
control+A 行首
control+E 行尾
control+F 前(font)
control+B 后(back)
control+N 下(down)
control+P 上(up)
control+G 后一个word(自己配置)
control+H 前一个word(自己配置)
control+option+F 前跳
control+option+B 后跳
control+K 删除光标后的内容
control+delete 删除光标前一个单词
command+delete 删除光标前内容
command+L 跳到指定行
control+L 光标所在位置跳到中间
command+~ 切换工程
command+shift+【或】 标签切换
command+数字(1-8) 
command+shift+Y 显示\隐藏控制台
command+数字0 显示\隐藏左导航
command+option+0 显示\隐藏右导航
command+shift+0 API文档
control+command+↑\↓ .h和.m切换
control+command+←\→ 浏览历史切换
按住option单击 点到定义的地方
按住command单击 窗口查看API
按住command双击 跳到文档查看API
shift+command+↑\↓\←\→ 选中(line,all)
shift+option+↑\↓\←\→ 选中或取消选中(word,line)
shift+←\→ 选中(char)

Lire plus

NSURLSessionDownloadTask后台下载遇到的几种情况

1、下载过程中如果直接crash,会在后台继续下载,下载完所有任务后,自动唤醒app,并依次调用:
application:didFinishLaunchingWithOptions:
application:handleEventsForBackgroundURLSession:completionHandler:
// 有几个任务调用几次下面两个方法
URLSession:downloadTask:didFinishDownloadingToURL: // 多次
URLSession:task:didCompleteWithError: // 多次

Lire plus

什么情况下使用NSOperationQueue

我个人非常喜欢用GCD,但是某些情况下一般会使用NSOperationQueue。
1、取消某个操作。
如果使用NSOperation,那么想要取消操作,只要任务运行之前,在NSOperation对象上调用cancel方法,但是无法取消已运行的任务。而GCD队列是无法取消的。
2、指定操作的优先级。
操作优先级表示操作与队列中其他操作之间的优先关系。优先级高的操作先执行,优先级低的后执行。GCD只有针对整个队列的优先级,没有针对每个block的优先级,需要自己编写调度算法,而NSOperationQueue所提供的功能要比GCD更为便利。NSOperation对象也有“线程优先级”,这决定了运行此操作的线程处在何种优先级上。用GCD也可以实现此功能,然而采用操作队列更简单,只需设置一个属性。
3、通过KVO监控NSOperation对象的属性。
NSOperation对象有许多属性都适合通过KVO来监听,比如可以通过isCancelled属性来判断任务是否已取消,又比如可以通过isFinished属性来判断任务是否已完成。如果想在某个任务变更其状态时得到通知,或是想用比GCD更为精细的方式来控制所要执行的任务,那么KVO机制会很有用。
4、重用NSOperation对象。
系统内设置了一些NSOperation的子类,比如NSBlockOperation,供开发者调用,我们也可以自己来创建。这些类就是普通的Objective-C对象,能够存放任何信息。对象在执行时可以充分利用存于其中的信息,而且还可以随意调用定义在类中的方法。这就比GCD中的那些简单的Block块要强大许多。这些NSOperation类可以在代码中多次使用,它们符合软件开发中的“不重复”原则。
5、指定操作间的依赖关系。
一个操作可能依赖其他多个操作。开发者能够指定操作之间的依赖关系,使特定的操作必须在另外一个操作顺利执行完毕之后方可执行。比如,从服务器端下载并处理文件的动作,可以用操作来表示,而在处理其他文件之前,必须先下载“清单文件”。后续的下载操作,都要依赖于下下载清单文件这一操作。如果操作队列允许并发的话,那么后续的多个下载操作就可以同时进行,但前提是它们所依赖的那个清单文件下载操作已经执行完毕。

Lire plus

产品记事

Mac,iPhone,开发者账号,github购买了$7/month的plan。

定位:Twitter三方客户端,简单易用,页面简洁。

Lire plus

lldb and chisel

##lldb

p(print, pri, e - -) 打印
e(expression) 改变调试器和程序中的值
po(e -o - -) 对象description
p 16 默认格式;p/x 16 十六进制;p/t 16 二进制;p/c 16 字符;p/s 16 以空终止的字符串
变量 以$开头定义变量
(lldb) e int $a = 2
(lldb) p $a * 19
c(continue, process continue)
n(next, thread step-over)
s(step, thread step-in)
finish(tread step-out)
frame info 当前行数,源码文件
thread return 在开头伪造返回值
br li (breakpoint list) 断点列表
br dis(breakpoint disable) 关闭断点
breakpint enable 打开断点
br del 删除断点
br s(breakpoint set) -f main.m -l 16

Lire plus

Emacs Keyboard shortcut

emacs filename 打开文件
C-x C-c 退出
C-x C-f filename 打开文件
C-x C-s 保存文件
C-x u 取消上一次操作

Lire plus