HuberyYang Blog

BE WILD AND HAVE FUN

KVO实现原理

iOS中KVO实现原理

KVO在Apple中的API文档如下:  Automatic key-value observing is implemented using a technique called isa-swizzling… When an observer is registered for an attribute of an object the isa pointer of the obs...

swift自定义Debug模式下print

swift debug 状态下全局打印, 打印信息包含打印时间、文件名、函数名、行数,便于程序调试

在OC中我们习惯于在pch文件中定义一个宏打印,以便于程序的调试,但在swift中不存在pch文件,按之前的方式是不行了。swift中可以单独创建一个文件当做pch文件使用,然后将 宏转换成函数 // debug log func kLog<T>(message:T,file:String = #file,funcName:String = #function,lineName...

Git 创建分支并合并到远程仓库

git本地分支创建并提交到远程仓库进行合并

创建新的分支 1.创建分支需要先进入本地仓库所在目录,如果还没有建立本地目录,可以先从GitHub上将项目拉下来。如果不太清楚如何将项目托管于GitHub上,可以参考这篇文章 本地项目托管到github。 例如我需要将项目的本地仓库放在桌面上,那么先进入桌面所在目录cd /Users/mac/Desktop ,然后将目标项目从GitHub上clone下来,命令git clone 'GitH...

Git 本地项目托管到github

将本地项目上传到github进行托管

目前,项目管理除了SVN还可以使用Git,下面介绍怎么将项目托管到GitHub。 注册GitHub账号 前往GitHub主页https://github.com注册账号,之后登入。 配置ssh GitHub上项目clone包含HTTPS、SSH两种方式,而使用SSH进行远程操作时是不需要输入账号密码的,所以你懂的。 查看个人文件中是否包含.ssh文件夹 打开终端,执...

iOS Could not find test host for xxxxTests

单元测试报错:Could not find test host for xxxxTests

单元测试报错:Could not find test host for xxxxTests: ,意为无法找到需要进行单元测试的 Target,完整的错误信息如下: 解决办法:按下图找到 Host Application ,然后选择准备测试的Target就可以了。

彩票双色球走势图

彩票双色球篮球走势折线图

走势图是彩票中综合多期开奖结果得出每个投注号码的遗漏值、出现次数、平均遗漏、最大遗漏等值然后展示的表格视图。这里只做了双色球蓝球的走势图,其它彩种的走势图与此类似。 先看效果图: 布局 布局分三部分: 顶部号码区 – 使用UIScrollView 左侧期号区 – 使用UITableView 右侧号码区 – 使用UIC...

vi-vim常用命令(mac)

mac系统上常用的vi命令

进入编辑/插入模式 i 光标前插入 I 行首插入 a 光标后插入 A 行尾插入 o 下一行插入 O 上一行插入 退出编辑/插入模式,进入命令模式 按ESC键退出编辑模式 命令模式下常用命令 行复制 yy 复制光标所在行 n + yy 复制从光标开始向下n行,如4dd意为加上光标所在行向下复制4行 p 粘贴 ...

组合数算法

组合数简化算法

一、概念 什么是组合数呢? 从m个不同元素中取出n(n≤m)个元素的所有组合的个数,叫做从m个不同元素中取出n个元素的组合数(Combination)。 组合数基本公式为: 线性写法为:c(m,n) = m!/((m-n)!*n!) 现实生活中彩票的概率计算就涉及到组合数,比如双色球中红球选择需要从 01~33 红球中选出6个,组合结果为 c(33,6) = 110756...

GCD(四) dispatch_apply、dispatch_barrier

dispatch_apply、dispatch_barrier

dispatch_apply dispatch_apply 可以像 for 循环一样多次执行其绑定的block,在所有block任务完成之后,再进行后续任务 /* iterations 执行次数 * queue 执行队列,并行或者串行,会影响到任务执行顺序 * block 具体任务 * size_t 执行下标,区分不同block,代表每个block执行顺序 */ void ...

GCD(三) dispatch_group 调度群组

dispatch_group

假设一下下面的场景:某APP首页分为多个功能模块,每个模块使用不同的数据接口,为了提升用户体验,在加载首页时可以先将所有模块数据拿到后再加载UI,但不用考虑哪个模块先得到数据。这种情况下使用GCD的 dispatch_group 调度群组 很容易处理。 dispatch_group 包含的函数 /* 生成 group 实例 */ dispatch_group_create() /* g...