如何使用 Git Submodule

译自Jon Cairns的博客 Git submodules是在一个仓库里链接另一个仓库的方式. 比如, 如果你的项目需要使用到别人挂在 Github 上的项目, 那么你就可以把它作为一个submodule,而不是把它所有的代码复制进自己的项目. 这样便有另外的好处:可以跟踪 submodule 仓库的变化并且可以一键更新而不是手动更新代码. 这篇教程将会告诉你: 如何向你的项目新增一个 submodule 如何 clone 带有 submodules 的仓库 如何更新 submodules 如何管理 submodules »

Block的实现

把 Block 语法转换成 C 代码 初次接触 Block 的时候,觉得 Block 似乎是 Objective-C 的一种特殊语法。但我们知道 Objective-C 最终是被编译器编译成 C 语言的,因此 Block 也不例外。LLVM 有一个选项-rewrite-objc可以把 Objective-C 代码转换成人们能看懂的 C »

ReactiveCocoa快速入门

最基本的使用(订阅一个信号),以TextField为例 每当textField的text属性发生变化时则emit 一个信号,这个信号可以进行二次处理(这些处理结果是返回一个signal,一般情况下是self),比如filter、map,最后subscriber可以在块里执行后续的操作. filter:过滤返回值为真的信号 map: 把信号emit出的值类型做一个映射,比如把text值的signal映射成bool [[self.usernameTextField.rac_textSignal filter:^BOOL(id value) { NSString *text »

NavigationBar Playground

可动态调整大小的导航条 要想调整导航条(NavigationBar)的大小或位置,只需改变他的frame即可。 但怎样让导航条上的那些控件(按钮、标题、searchbar之类的)也能成一定比例的缩小或者消失呢?当然是对这些视图做仿射变换(CGAfineTransfrom)。 我们知道UIBarButtonItem继承自UIBarItem,UIBarItem继承自NSObject,不能对它做一些UIView能做的仿射变换。 但是NavigationController.navigationItem有一个属性:titleView可作为我们自定义控件(所有继承自UIView的控件)的容器。 实现动态导航条的思路:当检测要触发调整导航条的事件时(scrollView向下向上滚动或Tap导航条等等),1、将导航条向上移动20个Point(因为状态栏的宽度是20) »

所有结点对最短路径问题(Floyd-Warshall算法)

所有结点对问题可以对所有结点都运行一次Dijkstra算法,若采用的是二插堆来实现最小优先队列,那么该算法的时间复杂度是O(VElgV). 但是Dijkstra算法写起来较复杂,这里讲的Floyd-Warshall算法是一种写法非常简单的最短路径算法,其时间复杂度是O(V^3),在非稀疏图的情况下,该算法的效率接近运行N次Dijkstra.(Floyd-Warshall算法适用于以邻接矩阵表示的图) Floyd-Warshall算法的几个重要概念: 中间结点:设路径p = <v1,v2,v3…..v(n-1),vn>,那么v2到v(n-1)就叫做路径p的中间结点. »