移动开发

被迫开始学习Typescript —— class (有彩蛋哦)

TS 的 class 看起来和 ES6 的 Class 有点像,基本上差别不大,除了 可以继承(实现)接口、私有成员、只读等之外。 参考: 基本用法 我们可以定义一个 class,设置几个属性,然后设置一个方法,封装 Object.assign 简化reactive 的赋值操作。 创建自己的对象基类 im

全面掌握组件化ARouter,即刻吊打面试官!

前言 为了实现组件化要解决的几个问题点,其中 页面跳转、组件间通信 的问题是使用了 ARouter 这个框架来解决的。ARouter确实是专门用于做组件化改造,官方是这么介绍的: 一个用于帮助 Android App 进行组件化改造的框架 —— 支持模块间的路由、通信、解耦 是时候对 ARouter 这个强大的框架做一个解析了:它是如何做到 页面跳转、组件间通信 的?我们能从ARrouter中

iOS开发 动态修改状态栏颜色

关于状态栏UIStatusBarStyle 状态栏有以下几种显示风格: 1.UIStatusBarStyleDefault 2.UIStatusBarStyleLightContent API_AVAILABLE(ios(7.0)) 3.UIStatusBarStyleDarkContent API_AVAILABLE(ios(13.0)) 4.UIStatusBarStyleBlackTrans

uni-app实现微信小程序横屏适配问题

1.小程序如何横屏 在手机上启用屏幕旋转支持 从小程序基础库版本 2.4.0 开始,小程序在手机上支持屏幕旋转。使小程序中的页面支持屏幕旋转的方法是:在 app.json 的 window 段中设置 "pageOrientation": "auto" ,或在页面 json 文件中配置 "pageOrientation": "auto" 。 以下是在单个页面 json 文件中启用屏幕旋转的示例。 代

View.post()不靠谱的地方你知道多少

首先我们来看一段代码: 启动了两个模拟器 API 22 和API 26分别是安卓7.0以下和安卓7.0以上 下面我们就从源码分析他们之间的差别以及为啥造成的现象不同 首先我们来分析安卓7.0以下的源码流程: 当attachInfo为空时走的是ViewRootImpl.getRunQueue().post(action);代码  当atta

iOS - 消息发送的完整流程

写在前面 在OC里面,调用对象的某个方法其实就是给这个对象发送一个消息,这个过程我们把它分为三大阶段,分别为:消息发送阶段、动态解析阶段、消息转发阶段,本文将细细剖析这三个阶段,但是在剖析这三大阶段之前我们需要先回顾一下Class的结构。 Class结构 苹果源码最新下载地址请点击:苹果源码 在objc-runtime-new.h中可以看到objc_class结构如下: struct objc_o

IOS之二进制重拍

原理 App包数据并不是在启动的时候一次全部加载到内存中的,而是类似于懒加载的方式,以每页16KB的数据进行分页加载。启动的时刻,也是缺页加载次数最多的时刻。因为启动用到的类和方法,并不是全部集中在某几页数据中,而是根据编译顺序,分散到不确定的分页数据中。我们做二进制重拍,也就是要让启动用到的函数,集中到最前边的几张表中,减少分页加载的次数,也就节约了启动时间。 那么为什么减少分页加载的次数,可以

Touch:iOS判断当前点击的位置是否在某个视图上

iOS判断当前点击的位置是否在某个视图上 记录几种判断触摸点是否在某个view上面的方法 第一种方式:isDescendantOfView: 通过touch.view调用 isDescendantOfView:方法,返回 YES, 则触摸点在我们需要判断的视图上;反之则不在。 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEv

iOS-button响应流程

Button响应首先从触摸屏幕开始 在这之前,需要了解坐标转换及原因 程序员的逻辑往往如图所示 image.png 也就是UI逻辑中,使用的坐标点往往是相对于父布局的,而布局会嵌套多层 屏幕上的触点,判断落点归属于哪个UI控件的话,就需要让所有UI控件的坐标点转换为相对于 window的 这样转换后的坐标就变为 image.png 直观是这样的逻辑,但真实的检测过程实际是

设计模式之装饰器模式

也称装饰者模式、装饰器模式、Wrapper、Decorator。 装饰模式是一种结构型设计模式, 允许你通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。 解决方案 当你需要更改一个对象的行为时, 第一个跳入脑海的想法就是扩展它所属的类。 但是, 你不能忽视继承可能引发的几个严重问题。 继承是静态的。 你无法在运行时更改已有对象的行为, 只能使用由不同子类创建的对象来替代当前的整个对