移动开发

【Android 架构之 MVI 雏形】响应式编程 + 单向数据流 + 唯一可信数据源

这是 MVI 架构的第一篇,系列文章目录如下: 【Android 架构之 MVI 雏形】响应式编程 + 单向数据流 + 唯一可信数据源 关于Android 架构 的MVI 初级体 【Android 架构之 MVI 完全体】 就MVVM 来说关于PartialChange & Reducer [Android 架构之 MVI究极体]数据区分状态和事件,解决粘性数据 引子 MVI 是Mod

iOS WKWebView同步设置Cookie的踩坑

一、存储Cookie 1. 登录成功后,存储Cookie到本地。因为下次重启APP,不再走登录接口的话,Cookie会丢失,所以需要先存本地。 存储时注意,要判断是当前登录系统对应的域名或IP。因为我遇到,登录接口成功后,还出现了友盟的Cookie的,防止被其他域名或IP的Cookie给覆盖。 1.存储Cookie // 存储Cookie        NSArray *cookie

Android productFlavors 实现多项目打包

最近接到产品一个需求,需要将现有工程打一个新的apk出来,要给到新客户使用,需要替换appIcon, appName, appId以及切换新的api接口需要切换新的地址。 场景大概如下图: 使用场景 二话不说,直接上代码 第一步:添加productFlavors配置 打开项目app工程的build.gradle文件,在android {}标签里面添加下面代码 productFlavo

mac中使用QuickTime Player看了移动硬盘里的视频,如何清除记录?

mac的QuickTime Player有一个bug,就是用它看完移动硬盘中的视频之后,播放记录(也就是右击QuickTime Player的最近使用项目)没有办法清除。我们先来复现一下问题: 移动硬盘中的视频 我们双击打开这个移动硬盘里的电影进行播放: 播放 当我们关掉电影后,右击看一下QuickTime Player的记录: 记录 这时候如果我们正

浅谈NSProxy

什么是 NSProxy     在苹果官方文档中是这样对 NSProxy 描述的:一个抽象的根类,通常,发送给代理的消息被转发到真实对象,或使代理加载(或转换为)真实对象。头文件代码如下: @interface NSProxy <NSObject> { __ptrauth_objc_isa_pointer Class isa; } + (id)alloc; + (id)all

Swift事件传递和响应过程

当view被点击,事件传递过程为: 1、系统检测到手指触(Touch)操作时会将其打包成一个UIEvent对象,并放入当前活动Application的事件队列 2、UIApplication将处于任务队列最前端的事件向下分发,即UIWindow 3、UIWindow将事件向下分发,即UIView 4、UIView首先看自己是否能处理事件,触摸点是否在自己身上;能处理且触摸点在自己身上,就继续寻找子

Android Handler之同步屏障机制(sync barrier)

Handler Message种类 Handler的Messgae种类分为三种: 普通消息 异步消息 屏障消息 其中普通消息又称为同步消息,我们平时发的消息基本都是同步消息,在这里不做讨论。 异步消息 通常我们使用Handler想消息队列中添加的Message都是同步的,如果我们想要添加一个异步的Message,有以下两种方式: 1、Handler的构造方法有个async参数,默认的构造方法此参数

如何解决 ‘adb‘ 不是内部或外部命令,也不是可运行的程序或批处理文件的问题

  在cmd中输入 adb ,显示 ‘adc‘ 不是内部或外部命令,也不是可运行的程序或批处理文件的问题 解决办法:在环境变量中添加adb所在的路径1、找到 adb.exe 的所在的文件路径,一般在 Android 安装目录下 \sdk\platform-tools\adb.exe我的路径是在:D:\Android\Sd

响应式编程之手写Reactor

前言 前文提到了响应式编程,响应式规范Reactive streams,以及响应式扩展Reactor的简单使用 在使用Reactor时我一直很好奇,它是怎么做到的? 好奇心驱使我想要自己去写一个Reactive streams的实现,并参照Reactor源码来看看大神是如何实现的 话不多说,开始写代码(本文比较啰嗦,因为掺杂了自己的实现思路) 简单序列的发布者 看一下Reactor的一个简单例子