月度存档: 八月 2017

iOS 从URL启动App与openURL

目标:

1、从URL启动自己或别人的App
2、传递数据

说明:

这是一个非常常用的功能,在一些第3方SDK中也常用集成如跳转到朋友圈分享微信支付,以及调回来之后的处理等。我们看下怎么实现:

实现:

继续阅读 »

iOS开发 UniversalLinks支持通用链接。

介绍

UniversalLinks 是iOS9退出的一个新特性,其作用为离开传统的scheme://方式外也可以启动app,方便在h5中调用app。(原https网页中 如采用iframe方式 调起app ,但https中的iframe.src应为https地址,故而对scheme://方式的兼容性并不到位。如为http方则没有这个问题)。

作用:
1、在浏览器(safari)中H5中将加上“打开app”的按钮。
2、允许再微信等app中启动自己的app (本人实测微信中不是所有情况都可以)

实现步骤:(下列苹果开发者文章中有详细的介绍,我这边再做简单的介绍)
继续阅读 »

iOS 并发队列

一、GCD

GCD是apple开发中并发队列(多线程)的一个解决方案。他主要用于优化应用程序以支持多核处理器。GCD用非常简洁的方法,实现极为复杂的多线程编程。GCD是纯C的api 在ios4.0时推出。
例如

 dispatch_async(dispatch_get_global_queue(0, 0), ^{
       //在子线程执行的代码,长时间处理
        
        dispatch_async(dispatch_get_main_queue(), ^{
                //主线程刷新UI
        });
    });

上述代码中,将需要长时间运行的操作代码放入子线程,执行完毕后回到主线程继续使用。

一、GCD队列
继续阅读 »

数据结构:二叉堆(BinaryHeap)

概念
a、二叉堆是一种完全二叉树(故而可以使用数组来保存)。二叉堆有最大二叉堆(父节点值永远大于任意子节点的值)和最小二叉堆两种(父节点的值永远小鱼任意子节点的值)。
b、二叉堆父子节点之间有大小关系,兄弟节点之间没有大小顺序关系。

用数组表示为 [开始符,5,6,7,12,8,9,8,13,14,9]

1、结构

//
struct BinaryHeap
{
    int* elements;  //使用数组存储元素列表
    int capacity;  //数组的容量
    int size;   //当前的节点数
};

继续阅读 »

数据结构:平衡二叉树(AVL)

一、概念
1、是一课二叉查找树。(每个节点都是唯一的)
2、每个节点左右子节点高度差不超过1。

二叉查找树为了查找方便我们会将所有左右子节点统一设置规则左小右大,或者反之。
假定左小右大,将1-10的数字插入二叉平衡树 则结果为:

二、树的遍历

常用树的遍历顺序有3种,分别为:先序(前序)、中序、后序

上述二叉树采用三种遍历方式分别得到结果
先序:4 2 1 3 8 6 5 7 9 10
中序:1 2 3 4 5 6 7 8 9 10 (可以看出平衡二叉树 中序遍历就是一个排好顺的结果)
后序: 1 3 2 5 7 6 10 9 8 4

三、结构
继续阅读 »