当前位置: 首页 > news >正文

swift APP缓存

这里的APP缓存是指Cache文件夹里的内容,iOS系统从iOS 10开始就支持系统自动清理功能了。
建议重要的内容不要放到 Cache文件夹中。

一、获取缓存

/// 获取缓存大小public static func getCacheSize() -> String {let folderPath = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true).first ?? ""let manager = FileManager.defaultguard let files = manager.subpaths(atPath: folderPath)else {return "0.0B"}var folderSize = 0.0for path in files {let temPath: String = folderPath + "/" + pathlet folder = try? manager.attributesOfItem(atPath: temPath) as NSDictionaryif let c = folder?.fileSize() {folderSize += Double(Float(c))}}// 保留2位小数if folderSize > 1024 * 1024 {return String(format: "%.2f", Double(folderSize)/1024.0/1024.0) + "MB"} else if folderSize > 1024 {return String(format: "%.2f", Double(folderSize)/1024.0) + "KB"} else {return String(folderSize) + "B"}}

二、清除缓存

/// 清理缓存public static func cleanCache(_ block: (() -> Void)?) {DispatchQueue.global().async {// 文件路径let folderPath = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true).first ?? ""if let files = FileManager.default.subpaths(atPath: folderPath) {for path in files {let temPath: String = folderPath + "/" + pathif FileManager.default.fileExists(atPath: temPath) == true {try? FileManager.default.removeItem(atPath: temPath)}}}// 返回主线程DispatchQueue.main.async {if let block = block {block()}}}}

三、清除网页缓存

/// 清除网页缓存public static func cleanWebCache() {let types = [WKWebsiteDataTypeMemoryCache, WKWebsiteDataTypeDiskCache]let websiteDataTypes = Set(types)let dateFrom = Date(timeIntervalSince1970: 0)WKWebsiteDataStore.default().removeData(ofTypes: websiteDataTypes, modifiedSince: dateFrom) {}}

相关文章:

swift APP缓存

这里的APP缓存是指Cache文件夹里的内容,iOS系统从iOS 10开始就支持系统自动清理功能了。 建议重要的内容不要放到 Cache文件夹中。 一、获取缓存 /// 获取缓存大小public static func getCacheSize() -> String {let folderPath NSSearchPathForDirectoriesIn…...

Linux中的dpkg指令(dpkg -l | grep XXX等)

dpkg是Debian包管理系统中的一个工具,用于在Linux系统中安装、升级、删除和管理软件包。它是Debian、Ubuntu以及基于它们的发行版中的包管理器。 dpkg 有很多用法,常用之举例:dpkg -l | grep apt 显示系统中安装的与apt相关(命名&#xff09…...

import type {} from ‘module‘ 具体解释

import type { AxiosInstance, AxiosRequestConfig } from axiosimport type { RequestConfig, RequestInterceptors } from ./typesimport type {} from module 是 TypeScript 中的一种导入语法,用于导入类型声明而不导入具体的值,它告诉 TypeScript 编…...

十年JAVA搬砖路——数据结构线性结构

线性结构 线性表是一种数据结构,用于存储一组有序的数据元素。它的特点是数据元素之间存在一对一的关系,每个元素只有一个前驱和一个后继(除了第一个元素和最后一个元素)。线性表可以用数组或链表来实现。 数据是指事物的符号表…...

Mybatis为什么需要预编译等一系列问题

1 SQL 预编译 SQL 预编译是一种提高数据库访问效率的技术,它通过将 SQL 语句预编译并存储在数据库中,减少每次执行时需要进行解析和编译的开销,从而提高数据库访问的效率。 在预编译阶段,SQL 语句会被解析并转换为可执行的二进制…...

【JVM基础】JVM入门基础

目录 JVM的位置三种 JVMJVM体系结构类加载器双亲委派机制概念例子作用 沙箱安全机制组成沙箱的基本组件 NativeJNI:Java Native Interface(本地方法接口)Native Method Stack(本地方法栈) PC寄存器(Program…...

【SpringBoot】详细介绍Spring Boot中@Component

在Spring Boot中,Component是一个通用的注解,用于标识一个类是Spring框架中的组件。Component注解是Spring的核心注解之一,它提供了自动扫描和实例化bean的功能。 具体来说,Component注解的作用是将一个普通的Java类转化为Spring…...

Redis执行lua脚本-Time函数-获取当前时间

演变过程: TIME 命令返回当前服务器的时间,包含两个条目 Unix 时间戳和这一秒已经过去的微秒数。 eval " local res redis.call(time); return res; " 0 eval " local current_time redis.call(TIME) local unix_timestamp tonumb…...

前端无需install快速调试npm包,Console-Import使用

Console-Import是一个Chrome扩展插件,可以方便地从Chrome控制台导入JavaScript和CSS资源。它可以帮助我们在开发过程中快速调试和测试第三方库或代码。 下载地址 安装 要安装Console-Import,请在Chrome网上应用店搜索“Console-Import”,然…...

构建稳定的爬虫系统:如何选择合适的HTTP代理服务商

在构建一个稳定、高效的爬虫系统中,选择合适的HTTP代理服务商是至关重要的一步。本文将介绍如何选取可靠且性能优秀的HTTP代理服务供应商,来完成搭建一个强大而稳定的爬虫系统。 1.了解不同类型和特点 -免费公开代理服务器:提供免费但可能存在限制或不…...

Python爬虫基础:使用Scrapy库初步探索

Scrapy是Python中最流行的网页爬虫框架之一,强大且功能丰富。通过Scrapy,你可以快速创建一个爬虫,高效地抓取和处理网络数据。在这篇文章中,我们将介绍如何使用Scrapy构建一个基础的爬虫。 一、Scrapy简介及安装 Scrapy是一个用…...

MacBookPro重装系统图文教程

关机 长按电源按钮10s即可强制关机 快捷键选择 Intel Command-R:获得安装过的最新的 macOS,但不会升级到最高版Option-Command-R:获得与 Mac 兼容的最新版 macOSShift-Option-Command-R:获得 Mac 自带的 macOS 或者与它最接近且…...

Android 6.0长按电源键添加重启菜单

重启图标&#xff1a;frameworks/base/core/res/res/drawable-hdpi/ic_lock_power_reboot_alpha.pngframeworks/base/core/res/res/drawable/ic_lock_power_reboot.xml <?xml version"1.0" encoding"utf-8"?> <!-- Copyright (C) 2014 The And…...

Python股票交易---均值回归

免责声明&#xff1a;本文提供的信息仅用于教育目的&#xff0c;不应被视为专业投资建议。在做出投资决策时进行自己的研究并谨慎行事非常重要。投资涉及风险&#xff0c;您做出的任何投资决定完全由您自己负责。 在本文中&#xff0c;您将了解什么是均值回归交易算法&#xff…...

机器人制作开源方案 | 桌面级机械臂--本体说明+驱动及控制

一、本体说明 1. 机械臂整体描述 该桌面级机械臂为模块化设计&#xff0c;包含主机模块1个、转台模块1个、二级摆动模块1个、可编程示教盒1个、2种末端执行器、高清摄像头&#xff0c;以及适配器、组装工具、备用零件等。可将模块快速组合为一个带被动关节的串联3自由度机械臂…...

有哪些前端调试和测试工具? - 易智编译EaseEditing

前端开发调试和测试工具帮助开发人员在开发过程中发现和修复问题&#xff0c;确保网站或应用的稳定性和性能。以下是一些常用的前端调试和测试工具&#xff1a; 调试工具&#xff1a; 浏览器开发者工具&#xff1a; 现代浏览器&#xff08;如Chrome、Firefox、Safari等&#…...

【数据结构】手撕单链表

目录 一&#xff0c;链表的概念及结构 二&#xff0c;接口实现 1&#xff0c;单链表的创建 2&#xff0c;接口函数 3&#xff0c;动态创立新结点 4&#xff0c;打印 5&#xff0c;头插 6&#xff0c;头删 7&#xff0c;尾插 8&#xff0c;尾删 9&#xff0c;查找 10&#xff…...

两个git本地如何配置两个ssh密钥for mac

我是在mac上操作的。windows上也差不多一样操作。 1.找到本地的.ssh文件。我的文件结构如下如&#xff1a; 文件结构&#xff1a; &#xff08;1&#xff09;两个known_hosts文件是自动生成的&#xff0c;不用管 &#xff08;2&#xff09;readme文件是我个人记事本记录笔记…...

iOS逆向进阶:iOS进程间通信方案深入探究与local socket介绍

在移动应用开发中&#xff0c;进程间通信&#xff08;Inter-Process Communication&#xff0c;IPC&#xff09;是一项至关重要的技术&#xff0c;用于不同应用之间的协作和数据共享。在iOS生态系统中&#xff0c;进程和线程是基本的概念&#xff0c;而进程间通信方案则为应用的…...

qt day 1

this->setWindowIcon(QIcon("D:\\zhuomian\\wodepeizhenshi.png"));//設置窗口的iconthis->setWindowTitle("鵬哥快聊");//更改名字this->setFixedSize(500,400);//設置尺寸QLabel *qlnew QLabel(this);//創建一個標簽ql->resize(QSize(500,20…...

从‘带不动’到‘跑满帧’:游戏玩家必懂的显示器带宽与接口选择避坑指南

从‘带不动’到‘跑满帧’&#xff1a;游戏玩家必懂的显示器带宽与接口选择避坑指南 刚入手一台2K 170Hz电竞显示器&#xff0c;却发现刷新率死活上不去&#xff1f;画面时不时出现撕裂或闪烁&#xff1f;别急着怀疑显卡性能&#xff0c;问题可能出在那根被你忽视的连接线上。…...

程序员副业指南:CSDN变现全攻略

程序员副业图谱&#xff1a;CSDN技术变现路径分析核心逻辑 围绕技术变现场景构建结构化框架&#xff0c;从技术栈适配性、市场需求匹配度、时间投入产出比三个维度建立评估模型技术咨询类副业路径技术问答悬赏CSDN问答模块的答题变现机制高价值技术领域识别&#xff08;云原生/…...

Ultimate ASI Loader深度解析:构建Windows游戏插件生态系统的技术实践

Ultimate ASI Loader深度解析&#xff1a;构建Windows游戏插件生态系统的技术实践 【免费下载链接】Ultimate-ASI-Loader The Ultimate ASI Loader is a proxy DLL that loads custom .asi libraries into any game process. 项目地址: https://gitcode.com/gh_mirrors/ul/Ul…...

H5扫码功能选型实战:微信JS-SDK vs 纯前端库,从公众号配置到代码封装的完整流程

H5扫码功能选型实战&#xff1a;微信JS-SDK vs 纯前端库的技术决策指南 当营销活动页需要实现"扫码领优惠券"功能时&#xff0c;技术团队突然陷入争论&#xff1a;是直接调用微信JS-SDK&#xff0c;还是采用纯前端扫码库&#xff1f;这个看似简单的技术决策&#xff…...

SparseMoE实战:从零构建一个高效的稀疏混合专家层

1. 稀疏混合专家层&#xff08;SparseMoE&#xff09;入门指南 第一次听说稀疏混合专家层时&#xff0c;我也是一头雾水。这玩意儿听起来像是某种高科技黑箱&#xff0c;但实际上它的核心思想特别接地气——就像我们去医院看病&#xff0c;普通全科医生能处理常见病症&#xff…...

MySQL数据恢复实战:从frm和ibd文件重建完整数据表

1. MySQL数据恢复实战&#xff1a;从frm和ibd文件重建完整数据表 数据库管理员最怕听到的就是"数据丢了"三个字。我经历过好几次半夜被叫起来处理数据丢失的紧急情况&#xff0c;那种头皮发麻的感觉至今难忘。不过别担心&#xff0c;只要.frm和.ibd文件还在&#xff…...

掌握LiteDB.Studio:嵌入式文档数据库可视化管理工具全攻略

掌握LiteDB.Studio&#xff1a;嵌入式文档数据库可视化管理工具全攻略 【免费下载链接】LiteDB.Studio A GUI tool for viewing and editing documents for LiteDB v5 项目地址: https://gitcode.com/gh_mirrors/li/LiteDB.Studio 在现代软件开发中&#xff0c;嵌入式数…...

Qt6.10.1 + QCustomPlot 2.1.1 串口绘图实战:从Qt5老项目迁移到新版本的完整踩坑记录

Qt6.10.1与QCustomPlot 2.1.1串口绘图项目迁移实战指南 当Qt5项目需要升级到Qt6时&#xff0c;许多开发者都会面临兼容性挑战。特别是那些涉及串口通信和数据可视化的项目&#xff0c;往往隐藏着不少"坑"。本文将带你完整走一遍从Qt5老项目迁移到Qt6.10.1的全过程&am…...

千问3.5-9B视觉模型快速部署指南:单卡RTX 4090D实测可用

千问3.5-9B视觉模型快速部署指南&#xff1a;单卡RTX 4090D实测可用 1. 开篇&#xff1a;为什么选择千问3.5-9B视觉模型&#xff1f; 如果你正在寻找一个能够理解图片内容的中文多模态模型&#xff0c;千问3.5-9B视觉版&#xff08;Qwen3.5-9B-VL&#xff09;值得你关注。这个…...

DDrawCompat:老游戏兼容性修复与性能优化终极解决方案

DDrawCompat&#xff1a;老游戏兼容性修复与性能优化终极解决方案 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mirrors/dd/DDrawC…...