2016年4月

JavaScript 和OC原生交互


- (void)ocCallJSFunction{ JSContext context = [[JSContext alloc]init]; JSValue jsValue = [context evaluateScript:@"21+7"]; int iVal = [jsValue toInt32]; NSLog(@"js value=%@,int=%d",jsValue, iVal); [context evaluateScript:@"var arr = [21, 7, 'fanyiqing.com'];"]; JSValue jsArr = context[@"arr"]; NSLog(@"JS Array:%@ length:%@",jsArr,jsArr[@"length"]); jsArr[1] = @"blog"; jsArr[7] = @7; NSLog(@"JS Array:%@, length:%d",jsArr,[jsArr[@"length"] toInt32]); NSArray nsarray = [jsArr toArray]; NSLog(@"nsarray:%@",nsarray); }

Vim
自带教程 终端输入 vimtutor
两种模式状态
1. 命令模式
2. 编辑模式

命令模式下的操作

  • dd 删除一行;三行:3dd
  • y复制
  • d()剪切
  • p(paste)粘贴
  • :wq 或 ZZ 或 保存退出 :q! 强制退出
  • / 搜索 命令模式下 /user 搜索 user 关键字
  • i 所有非hjkl的字符 进入编辑模式

编辑模式

文字编辑器

需求:
两个线程并行执行,当两线程都执行完后,在执行另一个线程,然后在执行并行多线程

thread1                                thread4
              --> thread3 -->
thread2                                 thread5

一个dispatch barrier 允许在一个并发队列中创建一个同步点。当在并发队列中遇到一个barrier, 他会延迟执行barrier的block,等待所有在barrier之前提交的blocks执行结束。 这时,barrier block自己开始执行。 之后, 队列继续正常的执行操作。
调用这个函数总是在barrier block被提交之后立即返回,不会等到block被执行。当barrier block到并发队列的最前端,他不会立即执行。相反,队列会等到所有当前正在执行的blocks结束执行。到这时,barrier才开始自己执行。所有在barrier block之后提交的blocks会等到barrier block结束之后才执行。
这里指定的并发队列应该是自己通过dispatch_queue_create函数创建的。如果你传的是一个串行队列或者全局并发队列,这个函数等同于dispatch_async函数。

升级到Xcode7后,发现代码折叠功能不见了!!!
苹果默认把这个功能禁掉了:在Xcode菜单里选择Preference——Text Editing,你会发现里面有一个“code folding ribbon”,勾选它就能恢复代码折叠功能了。
然后通过菜单Editor——Code Folding,你就可以使用你需要的折叠功能。

相关快捷键:
局部折叠(折叠一个函数) :Command+Option+Left/Right
全局折叠(折叠当前文件下的全部函数):Shift+Command+Option+Left/Right
折叠注释块:(/* */之间的文字) : Ctrl+Shift+Command+Left/Right