算法基础

计算机是用来存储和处理数据的。自然界中物体不可能是独立的,必定和别的物体之间有联系。比如人离不开衣服一样(除非在家裸睡,那也得睡在床上啊),总之物体不可能独立存在。同样的,在计算机的世界里,数据之间也是存在某些联系的,我们把这种联系称为数据结构。数据结构有逻辑结构和物理结构。逻辑结构有:链表,树,图等。物理结构表示的是数据在内存中的存储结构,可以是连续的,比如数组。也可以是不连续的内存,比如链表结构,可以用一个指针指向另一段内存的起始位置。在写 C 语言的时候,有很多数据类型,比如 int、 float、struct 等,为什么会有这么多数据类型呢?打个比方,现实世界中,有别墅,有胶囊公寓,这些都是用来住人的,家里人多的话住别墅,人少的话住胶囊公寓就行。房子就好比是计算机中的内存,有了数据结构后就能给数据分配合适的存储空间,这样不会浪费,效率会高点儿。

用collectionView实现瀑布流

在实现瀑布流之前,先来介绍下 collectionView 。collectionView 和 tableView 特别的像,但是比 tableView 多了布局。它运用一个灵活多变的布局呈现出你想要的效果。collectionView 用的最多的是用网格来展示数据(如下图所示),当然我们可以自定义布局,实现你能想象到的任何效果。

利用 Jenkins 自动生成 ipa 包

背景

项目进入测试阶段要不停的给测试的同学打包,我们就不得不停下手中的工作,Archive -> 导出 ipa 包 -> 发给测试的同学 -> 测试的同学通过 iTunes 装到手机上测试 -> 发现 bug,我们修改完后又需要重新打包,然后不停的重复上面的工作,你烦不烦?反正我是受够了。。。正是有了上面的痛点,才会去想能不能我们提交代码后让测试的同学自己打包,然后通过一个 url 直接安装到手机上?答案是必须的能,要不我也不用在这里逼逼逼了~~~,废话少说,开始。。。

iOS 中 native 和 JavaScript 的交互原理以及 WebViewJavascript 源码分析

前言

在 iOS 开发中经常要用到 UIWebView ( iOS8 中可以用 WKWebView,本文章以 UIWebView 为例 ) 来展示一些东西,其中就难免要和网页进行交互。服务端提供 H5 供多个平台使用,我们就不用在 native 中开发了,是不是很棒。Hybrid App 的优势很明显,这就要求我们必须具备 native 和网页交互的技能。学点儿 JavaScript 的知识能帮我们更好的理解交互的原理。本文主要来介绍 UIWebView 和 JavaScript 的交互原理以及 WebViewJavascriptBridge (github 地址) 源码分析。

Objective-C 中的 Blocks 原理探究

前言

Blocks 是 OS X v10.6 和 iOS 4.0 引入的新特性。觉的自己对 Blocks 掌握的还不错的话,那就来试着做做这五个测试题 。怎么样,全做对了吗?没全做对的话就静下心来,好好的总结一下吧。

本文章的目录结构:

1 Blocks 基础知识    
    1.1 Blocks 是什么
    1.2 Block 变量
    1.3 __block 变量
2 Block 使用要注意的问题    
    2.1 Block 的存储域
    2.2 __block 变量会随着 Block 变化而变化
    2.3 解决 Block 循环引用
3 Block 原理探究    
    3.1 简单的 Block 原理
    3.2 Block 截获变量的原理
    3.3 Block 截获局部变量的出错的原因
    3.4 Block 截获静态变量的原理
    3.5 Block 截获 __block 变量的原理
4 参考文章