ReactiveCocoa 源码阅读记录。】的更多相关文章

1:RACSingle 需要订阅信号 RACSignal *signal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) { [subscriber sendNext:"]; [subscriber sendCompleted]; return nil; }]; [signal subscribeNext:^(id x) { } error:^(NS…
EventBus源码阅读记录 repo地址: greenrobot/EventBus EventBus的构造 双重加锁的单例. static volatile EventBus defaultInstance; public static EventBus getDefault() { if (defaultInstance == null) { synchronized (EventBus.class) { if (defaultInstance == null) { defaultInsta…
版本号0.1.54 看源码之前,我先去看下官方文档,对于其源码的设计说明,文中所说的原生都是指android 看完官方文档的说明,我有以下几个疑问 第一个:容器是怎么设计的? 第二个:native和flutter的channel的通道是如何设计的? 第三个:Flutter是适配层到底再做些什么? 中控中心FlutterBoost 单独拎出来讲讲,这个类比较简单,就是集合各个模块并让其初始化,同时也是该插件入口处,不管原生和flutter都一样,看源码也是从这里开始看起,但原生和flutter的初…
之前也用了一段时间Vue,对其用法也较为熟练了,但是对各种用法和各种api使用都是只知其然而不知其所以然.最近利用空闲时间尝试的去看看Vue的源码,以便更了解其具体原理实现,跟着学习学习. Proxy 对 data 代理 传的 data 进去的为什么可以用this.xxx访问,而不需要 this.data.xxx 呢? // vue\src\core\instance\state.js const sharedPropertyDefinition = { enumerable: true, co…
这几天有大神推荐读underscore源码,趁着项目测试的空白时间,看了一下. 整个underscore包括了常用的工具函数,下面以1.3.3源码为例分析一下. _.size = function(obj) { return _.isArray(obj) ? obj.length : _.keys(obj).length; }; 整个underscore源码基本上都是以上这种方式写的,所以弄懂上面这段源码,整个underscore的源码就大概清楚了六七成了,剩下的源码用些时间,也就迎刃而解. 因…
在写驱动的过程中,对于入口函数与出口函数我们会用一句话来修饰他们:module_init与module_exit,那会什么经过修饰后,内核就能狗调用我们编写的入口函数与出口函数呢?下面就来分析内核调用module_init的过程(这里暂时分析编译进内核的模块,不涉及动态加载的模块),以这个过程为例子来了解内核对于不同段的函数的调用过程. 下面从内核的start_kernel函数开始分析,下面是调用过程: start_kernel rest_init kernel_init do_basic_se…
新建html文件,在浏览器中打开文件,在控制台输入consoole.log(window);新建html文件,引入JQuery后在浏览器中打开,在控制台同样输入consoole.log(window);会发现window下多了$(jquery)对象. 1.(function(a, b){})(window)自运行: 2.var c = a.document      , d = a.navigator      , e = a.location      , f = function(){}()…
0.webpack默认引入的是vue.runtime.common.js,并不是vue.js,功能有略微差别,不影响使用 1.阅读由ts编译后的js: 入口>构造函数 >定义各类方法 > return vue; function Vue (options) { if ("development" !== 'production' && !(this instanceof Vue) ) { warn('Vue is a constructor and s…
引自underscore.js context参数用法 _.each(list, iteratee, [context]); context为上下文,如果传递了context参数,则把iterator绑定到context对象上 如果要修改iterator的调用对象为context,即函数中this为context,就传递这个参数,否则context为undefined 下面两个示例,运行看看打印出来的this就明白了 var arr = [1, 2, 3]; console.log(this);…
Author: tr1ple 这部分主要分析scanner.php的逻辑,在token流重构完成后,此时ini_get是否包含auto_prepend_file或者auto_append_file 取出的文件路径将和tokens数组结合,每一个文件都为一个包含require+文件名的token数组 接着回到main.php中,此时调用scanner的parse开始解析,这里的一个设计点问题就是要扫描漏洞,此时已经需要准备好的有哪些东西 1.file_scanning: 这里实际上就代表的是将要进…