移动开发

Android可不可以在子线程中更新UI?

我们首先来看一段代码: 在一个activity的xml文件中随便写一个TextView文本控件,然后在Activity的onCreate方法中开启一个子线程并在该子线程的run方法中更新TextView文本控件,你会发现根本没有任何问题。 但是如果你把Thread.sleep(2000)放开绘发现报错崩溃: 我们从这堆栈开始分析源码原因: mButton.setText

浅析iOS开发的那些架构:MVC/MVP/MVVM

前言 很早以前就想总结一下,iOS开发中常用的一些架构:MVC、MVP、MVVM;但是一直感觉自己没有理解透彻,因为发现自己理解的和网上其他人的总是有出入;网上的众说纷纭,仁者见仁智者见智; 随着经验的增长,自己对于这些架构的理解每次都有不同的收获,渐渐的可能和最初了解的情况大相径庭; 现在转念一想,架构这些事情并没有绝对的对错,也不会有什么标准答案;每个人都会结合自己的经验加以理解,实践出最符合

iOS获取ipa及解压Assets.car,兼容M1

前言 在iOS开发、学习过程中我们经常有需求需要看看别人的app是怎样实现的,所以需要提取其他app的ipa以及图片资源。 网上有很多过时的文章,是没法实际操作的。接下来我们在M1的Mac上演示 1.获取ipa 1.1下载工具Apple Configurator 在App Store 中搜索Apple Configurator,点击下载,打开长这样: 1.jpg 1.2 连接

Android VSYNC与图形系统中的撕裂、双缓冲、三缓冲浅析

VSYNC与画面撕裂 VSYNC即vertical sync,也称为垂直同步,是一种图形技术,主要就是强制将帧速率与显示器的刷新率同步,最初由 GPU 制造商提出,主要用来处理屏幕撕裂。首先了解下两个名词:FPS与屏幕刷新频率 帧率[Frame Rate,单位FPS]-显卡生成帧的速率,也可以认为是数据处理的速度 屏幕刷新频率 [Refresh Rate单位赫兹/HZ]:是指硬件设备刷新屏幕的频

内存管理解析

目录 1.内存区域解析 2.什么是引用计数(retainCount) 3.什么是指针和地址 4.内存泄漏、野指针、空指针、僵尸对象 5.内存管理原则 6.常用内存修饰词 7.alloc、init、new、dealloc 区别 8.强引用、弱引用、循环引用 9.weak详解 10.深浅拷贝理解

iOS知识复习笔记(6)--- 自动释放池AutoreleasePool

原理 autoreleasePool 是OC中的内存自动回收机制,它可以延迟加入autoreleasepool中的变量release的时机,正常情况下,创建的变量会在超出作用域的时候release,但是如果变量加入autoreleasepool,那么release将会延迟执行。 释放时机 被autorelease修饰的对象,释放时机有两种: 如果通过代码添加一个autoreleasepool,在

vite打包vue3后如何直接在浏览器打开(非ESModule)

自vite和vue3发布后,我就用他们作为主要的vue开发模式,但是今天需要把以前写的vue3的内容嵌套到一个自己编译的安卓webview中,但是去这个webview中集成esmodule是一件很麻烦的事情,所以我需要使用vite把vue3打包成非esmodule的方式,去让file协议能正常加载。 step1: 安装 @vitejs/plugin-legacy [@vitejs/plugin-l

APP启动更快iOS15

之前可以通过设置DYLD_PRINT_STATISTICS = 1 变量在XCode上统计APP启动时间pre-main阶段,但是在XCode13.0 & iOS15之后,通过设置变量的方式在XCode上失效啦; Instrument: App Launch & Time Profiler 取而代之 Xcode---> Product--->Profile进入到Inst

YYSegmentViewController 分页控制器的介绍

github地址: 一、页面介绍 YYSegmentConfig:配置文件 YYSegmentViewController:控制器 YYContainerScrollView:控制器view底部的ScrollView YYControllerPageView:控制器view的容器 YYSeg