(译)Swift 3 中的 GCD 与 Dispatch Queue

本文由SwiftGG独家授权发布。

多核处理器是中央处理器(CPU)自出现以来最大的技术进步,这意味着它可以同时运行多条线程,并且可以在任何时刻处理多于一个的任务。

串行执行以及伪多线程都已经是多年以前的历史了,如果你不是年轻到没有使用过老式的电脑,又或者你有机会去接触搭载着旧操作系统的旧电脑,你就能轻易明白我的话。但是,不管 CPU 拥有多少个核心,不管它有多么强大,开发者如果不好好利用这些优势 ,那就没有任何意义。这时就需要使用到多线程以及多任务编程了。开发者不仅可以,实际上是必需要好好利用设备上 CPU 的多线程能力,这就需要开发者将程序分解为多个部分,并让它们在多个线程中并发执行。

JavaScriptCore 基本使用

现在的移动开发已经越来越倾向于使用混合开发,而要使用混合开发就要求我们必须能让原生与 JavaScript 进行无缝的交互。

在 iOS 7 之前,我们对 JavaScript 的操作只有 UIWebView 里的一个方法 stringByEvaluatingJavaScriptFromString,而从 Javascript 里面调用原生方法只能使用拦截 URL 的方法,类似 WebViewJavascripBridge 就是基于 URL 拦截的原理来进行实现的。

而从 iOS 7 开始,苹果把 JavascriptCore 引进到了 iOS 开发当中,这个框架可以让我们脱离 UIWebView 同时用更方便同时更强大的方法来与 Javascript 进行交互。

理解 Objective-C 中的指定构造方法

所有对象在被使用前都要先进行初始化。对于最简单的情况,我们只需要使用 init 方法进行初始化就可以了。然而,大多数情况下,对象的初始化都需要我们提供额外的信息,并且有时创建实例的方法不止一种,这时我们就需要提供多个构造方法。

对于需要多个构造方法的情况,我们需要确保有一个指定构造方法(designated initializer),指定构造方法用于为类提供必要的信息使其能完成初始化工作,所有其它的构造方法都要调用指定构造方法。这些其它的构造方法,我们通常称为“便利构造方法”,它们只能直接或者间接地调用指定构造方法,而不能直接对象进行初始化。

iOS 逆向手把手教程之一:砸壳与class-dump

年前在学习 iOS 逆向的时候,为了练手,写了一个微信抢红包插件。但是由于过年之后就回老家了,开始新的生活总要分散掉一定的精力,所以关于 iOS 逆向的学习也就放下来了,到现在也有大半年没有动过了。

这段时间发现微信运动挺火的,经常有小伙伴在跟我炫耀说他走了多少步。我就突然想到,要不我来写一个 tweak 来修改微信运动的步数好了,我想调几步就几步,看你们还怎么得瑟。

说干就干,正好又赶上五一放假,除了相亲之外的时间,就都可以拿来写代码啦(笑~)。

使用 Git Hook 自动部署 Hexo 到个人 VPS

距离上次换博客系统其实也才不过半年,当时还傻傻地觉得使用 Wordpress 挺好的,有很多现成的解决方案,也不用折腾了。用过一段时间才发现,原来使用 Wordpress 才是最麻烦的,安装各种插件,各种操作包括发新文章都需要到后台进行操作,而且原生不支持 Markdown 语法,简直对程序员太不友好,更重要的这样一点也不 geek。

经过一段时间的纠结,最终还是决定使用 Hexo。一方面它是 Node.js 写的,据说速度很快。另一方面,它的所有操作都可以直接在命令行完成,修改也只需要修改配置文件就可以了,再也不用上后台各种点击,各种麻烦了。