苍耳's blog

首页

关于

归档

loading..
functional

函数式编程思想简介

在平时的iOS开发中,我们大部分还是依靠着最早的MVC的思想开发着,最多也是进行了部分变种,比如MVP,MVVM,这些都是完全的面向对象的思想,在处理一些简单的场景的时候还是非常有效的,但是在某些场合,我们总会觉得难以解耦,难以进行模块化拆分,这是由于目前大部分架构中,在业务逻辑部分依然是过程性的,整个过程中还是需要依赖大量的其他模块,这次我们来看看函数式编程的思想,以另一种角度来看问题是否能够去解决部分问题。

更多
loading..
内存栅栏内存屏障fencebarrier

原子性内存栅栏问题简述

内存栅栏(Memory fence),也称为内存屏障(Memory barrier),以前碰到这类概念都是基于锁的理解,比如dispatch_barrier。在看bmalloc的源代码时,发现其在使用原子性(atomic)的时候,出现了一种memory_order的概念,所以这里来简单看看原子性方面的问题。

更多
block

如何判断block回调未被调用

在处理异步过程中,我们经常会碰到这种情况,需要异步处理并异步回调completionHandler,但是有些场景下,如果你在处理完异步逻辑,而不回调completion的时候,会产生逻辑上的bug或者内存泄露问题,那么我们就需要知道调用方是否调用了completion。

更多

C语言的动态调用

我们都认为C语言是一种非常静态的语言,几乎没有什么动态特性,同时往往在编译器就决定了整个运行方式,运行期是很难改变其运行状态的。其实C语言也是可以比较动态的,只是由于C语言是一个跨平台兼容语言,每个平台都有不同的实现,其动态化很难统一。这里我们看看在AArch64平台上的动态化实现。

更多
loading..
调用栈卡顿分析crashstackKSCrash

运行时获取函数调用栈

在之前做debug工具的时候,就有一个想法,在页面产生卡顿的时候,如果能够获取主线程的函数调用栈就好了,就可以分析出哪里出现了性能瓶颈。由于当时对这部分内容还不是很了解,就没有继续下去,现在重新来实践一次。

更多

2017年总结

2017年很快就过去了,在这期间发生过很多事情也明白很多事情,这里就来做个年终总结吧。

更多
1234510