Jun 12
前几日为已经配置好cocoapods的项目配置单元测试,本来事前已经做好单测的准备工作,甚至单测的demo都写好了,一往项目中搭,却遇到了很多意外的问题,折腾了整整一天,特此记录。

1.一开始,什么也没做,就直接放入了准备好的单测程序,然后运行。当然,gg,编译不通过。仔细一看编译失败的原因,它告诉我是“Libraries not found”。原来如此,可以想想确实并没有通过pods把那么多第三方库引入嘛。好,那么参考这篇问答(http://stackoverflow.com/questions/14512792/libraries-not-found-when-using-cocoapods-with-ios-logic-tests,注意,这是本文最大的坑)的最佳答案,我把我们的podfile改成了其中推荐的形式即:
Jun 6
链式编程,形如instance.do1().do2().do3().dolast();大家都知道是怎么实现的,即每个实例方法的返回值均为this,以保障可以继续进行方法调用。这样的编程方式对比较连贯的操作中,能有效提升代码可读性,使用起来也非常舒服。在比较复杂的链式编程,比如rxjava,参数包涵lambda表达式或者其它复杂的运算的时候,我们为了代码的可读性,一般会对每个方法进行提行编写,比如下面这段java代码:

FPHttp.call()
.userInfo(String.valueOf(user.id), user.token)
.map(rider -> {
    rider.data.uid = user.id;
    RiderModel.getInstance().saveRider(rider.data);
    return rider.data;
})
.map(rider -> rider != null)
.distinctUntilChanged()
.subscribe(hasRider);
May 26
0.简介

代码静态分析从广义上讲,是指在不运行计算机程序的条件下,进行程序分析的方法。具体分析的包括语法错误,可能出现的程序错误,代码样式规范等内容。大部分的静态程序分析的对象是针对源代码的,也有些静态程序分析的对象是中间代码或者目标代码的,总之以不同的目的会有不同的需求。
对代码进行静态分析,主要目的还是通过这一种辅助手段,减少代码出错的可能性,提升代码间接性,可读性等多方面工程化性质,间接提升工程质量,降低开发成本。
May 13
1.oc代码静态检查方案

对于oc代码的静态检查方案,传统的,当然是Clang Static Analyzer咯。看名字就知道CSA是通吃Clang下所有代码的静态检查器。另外还有一个最常见的方案,oclint,看名字就可知,它是针对oc的类lint的静态检查器。这个并没有强大的背景,但是在强大的开源社区的帮助下,它还是非常完善的。
具体从原理上考虑,csa和oclint其实一样,都是基于clang的前端编译的。clang把我们的源码编译为了抽象语法树和llvm的字节码,而cas与oclint事实上是在对这两个东西进行分析。而分析层面上,这两者则有一些不同。
May 2
1.简介

ES6生成器,即generators。生成的是啥?是一个迭代器的生成器,语法参考于c#与python的完全相同的功能,以yield为关键字做为生成器的临时退出点。简单的举举栗子,如果是一个普通的函数,写起来大概是这样的:

function foo(){
  //dosomethings
  return answer;
}
foo();

如果是一个生成器,它看起来会是这样的:
Apr 8
界面扭曲,听起来就是高大上酷炫屌的的动效,说起界面扭曲特效,常见的系统中,iOS和OSX的动效中会稍有出现,印象比较深的当年ubuntu就有很多3d特效之类的涉及到界面扭曲,微软平台上有WindowsFX软件可以做到类似的事情。而回到安卓,大概系统动效里面完全没有扭曲效果吧。

扭曲效果往往被扣上好看不实用的标签,但是在一些比较注重界面交互与动效的app上,还是有存在的必要性的。那么扭曲效果与其它界面变化有什么不同呢?相对于移动旋转缩放,包括看起来高大上的3d旋转,它们最大的特点是,可以用矩阵来表示这一变化,在显示层也就是把矩阵叉乘到原本参数上的事儿。而扭曲,就是一个远比这个复杂的工作了。

在实际使用中,常见的app使用场景包括:图像弯曲贴图(静态),精确的大块图/界面回弹动画,翻页效果等。
Apr 1
RenderScript是安卓3.1引入,安卓4.0全面推开,且通过兼容包最低可兼容到安卓2.2的一种脚本语言工具。它虽然叫script,但它是一门以c99位基础的类c语言,看起来会觉得有点像GLSL(opengl着色器语言,事实上功能上也很像),并且它确实和安卓的jvm和其它脚本解释器无关,而是通过编译为llvm运行在本地代码上。
它的名字虽然叫render(渲染)script,但它的实际功能缺并不仅限于渲染或者绘制相关的东西,而是一个解决数据密集型计算的通用解决方案。就现在的api来看,renderscript的api的功能包括:基本数学,向量,矩阵,四元 / 多线程,gpu调用,时间 / 输入输出对象;曾经还有图形绘制的api,不过在安卓api23已经被弃用了,当然现在也就不推荐使用了。可以看到,api主要实现的功能是数学,图形学运算(类似于GLSL)与高效集成计算构架(类似于CUDA,openCL)。目标当然一目了然。
Mar 9
请注意,本文就是在瞎jb扯,想到哪儿写到哪儿,内容并没有可证伪性,也没有讨论的意义,请不要在意。
上一頁 1 ... 4 5 6 7 8 9 ... 12 下一頁