RunLoop的定义当有持续的异步任务需求时,我们会创建一个独立的生命周期可控的线程。RunLoop就是控制线程生命周期并接收事件进行处理的机制。RunLoop是iOS事件响应与任务处理最核心的机制,它贯穿iOS整个系统。Foundation: NSRunLoop Core Foundation: CFRunLoop 核心部分,代码开源,C 语言编写,跨平台RunLoop特性主线程的RunLoop
转载
2023-09-21 13:16:11
105阅读
iOS性能优化分析首先要熟悉几个概念PNG 和 JPG 的区别是什么? png格式的图片有alpha通道,jpeg则没有。png无损压缩,jpeg允许你选择0-100%的压缩质量。如果需要alpha通道(透明),就只能用png格式.CPU 和 GPU如果想看看两者的区别,先得了解iOS视图背后的层级结构原理 上图中的最底下一行是硬件层,由GPU和CPU组成。 我们经常说到的硬件加速其实
转载
2024-08-21 22:00:28
45阅读
FastImageCache 是 Path 团队开发的一个开源库,用于提升图片的加载和渲染速度,让基于图片的列表滑动起来更顺畅,来看看它是怎么做的。一、优化点iOS 从磁盘加载一张图片,使用 UIImageVIew 显示在屏幕上,需要经过以下步骤:从磁盘拷贝数据到内核缓冲区从内核缓冲区复制数据到用户空间生成 UIImageView,把图像数据赋值给 UIImageView如果图像数据为未解码的 P
先从一个比较常见的问题入手: 5 NSTimer * timer = [NSTimer scheduledTimerWithTimeInterval:1
6 target:self
7 select
转载
2024-01-27 21:04:42
92阅读
iOS Runloop 检测卡顿
## 引言
卡顿是指应用程序运行时出现明显的停顿或者延迟,给用户带来不良的体验。在开发iOS应用时,我们经常会遇到应用卡顿的情况。为了保证应用的流畅运行,我们需要在开发过程中检测和解决卡顿问题。本文将介绍如何使用iOS Runloop来检测和解决卡顿问题。
## 什么是iOS Runloop
iOS Runloop是iOS应用程序的运行循环,它负责监听和处
原创
2023-12-26 05:07:52
244阅读
本期知识小集的主要内容包括:WWDC 2018 苹果推荐的大图加载方式获取 ipa 包三种姿势git 恢复误删的 stash让人怀疑人生的一段代码Objective-C import 第三方库头文件总结WWDC 2018 苹果推荐的大图加载方式作者: halohily在 iOS 开发中,图片载入到内存中占用的空间和它的二进制文件大小无关,而是基于图片的尺寸。在 WWDC 2018 中,苹果为我们建
转载
2023-08-27 17:14:19
65阅读
以7张添加到bundle中的图片通过NSTimer每2s执行一次加载操作为例:
图片加载方式(2种):
(1)[UIImage imageNamed:图片名];
实现过程:
&
转载
2023-08-19 16:19:22
96阅读
有的小伙伴可能没那么在意图片的加载方式,习惯了imageNamed,看到initWithContentsOfFile时也没有仔细看他的作用。1、首先我做了一个实验,比较了两种方式对内存的影响。测试方法,对于app的引导页(5张图)分别使用imageName和initWithContentsOfFile去初始化图片使用imageName加载图片[UIImage imageNamed:@"launch
转载
2023-08-29 13:40:43
123阅读
前言依稀记得很久以前被问到过这么一个问题。如果网络下载下来的图片很大的情况下要怎么处理。那时候对这块内容不是特别了解,大致只知道内存肯定会爆掉。然后回答的是超大图就不显示了吧???。后面也尝试去Google了,但是可能那时候比较急躁,没有很深入的去理解这个问题。今天我在回味YY大佬的iOS 处理图片的一些小 Tip的时候看到了下面的评论里面有人也提了相同的问题,大佬的回答是可以参考苹果官方例子:
转载
2023-08-29 13:41:16
266阅读
# iOS开发 大图加载
在iOS开发中,我们经常会遇到需要加载大图的需求,比如展示高清图片、地图地块加载等。大图加载需要特殊的处理方式,以保证性能和用户体验。本文将介绍一种常用的大图加载方式,并提供代码示例供参考。
## 1. 问题背景
加载大图时,传统的加载方式可能会遇到以下问题:
- 内存占用过高:一些大图可能会占用较大的内存空间,导致应用内存占用过高,容易引起闪退等问题。
- 加载
原创
2023-12-11 04:00:16
149阅读
# 在 iOS 中高效加载大图
在移动应用开发中,尤其是在 iOS 平台上,处理图像加载是一个常见的挑战。特别是对于大图像,如何高效加载并展示,既保证流畅的用户体验,又避免内存占用过高,是每一个开发者都需要关注的问题。本文将介绍几种 iOS 中加载大图的方法,并提供相应的代码示例。
## 1. 使用 URLSession 下载图像
在网络上下载图像时,首先要使用 `URLSession`。这
本次分析针对当下流行的中国地图图片处理,1亿像素,就是下面这张:原图尺寸:11935x8554 文件大小:22.1MB 原始加载方式
首先,我们尝试一下直接加载的方式,看看效果会有多恐怖
效果请看下面的Gif动画展示:
直接加载原图内存占用
可以看到加载
入口 setImageWithURL:placeholderImage:options: 会先把 placeholderImage 显示,然后 SDWebImageManager 根据 URL 开始处理图片。进入 SDWebImageManager-downloadWithURL:delegate:options:userInfo:,交给 SDImageCache 从缓存查找图片是否已经下载 qu
转载
2024-07-15 01:29:11
17阅读
前言NSRunLoop是一个比较深奥难懂的iOS知识,我觉得很有必要花上一段时间对它进行深入的理解学习,之前针对NSRunLoop进行了一篇总结,可以参考。 NSRunLoop-深入剖析 如果从这些文字理论上去理解NSRunLoop,是很深奥难懂的,所以,我这里专门总结了一些跟NSRunLoop有关的使用场景,方便加深理解。先看下苹果系统是怎么使用runloop的,后面再看看我们开发的时候,能用
转载
2023-10-08 08:28:13
200阅读
runloop介绍RunLoop 很好理解,字面上就知道它是干什么的,Run 表示运行,Loop 表示循环,意思很明确就是不停的循环运行其实RunLoop的本质还是一个对象,然后这个对象在循环中用来处理程序运行过程中出现的各种事件(比如说触摸事件、UI刷新事件、定时器事件、Selector事件),从而保持程序的持续运行。RunLoop 在没有事件处理的时候,会使线程进入睡眠模式,从而节省 CPU
转载
2023-09-26 09:50:00
176阅读
Runloop是事件接收和分发机制的一个实现。 Runloop提供了一种异步执行代码的机制,不能并行执行任务。 在主队列中,Main RunLoop直接配合任务的执行,负责处理UI事件、定时器以及其他内核相关事件。RunLoop的主要目的: &n
转载
2024-09-11 00:20:57
50阅读
当我们在某一个View 多个UIImageView,且UIImageView都显示的是高清大图,就有可能出现内存警告的问题。如果第一次进入这个view,没有发生内存警告,当再次进入这个view,如果上一次的内存没有及时释放,这一次次的累加,便可导致内存崩溃。 1,UIImage 加载图片的方式。 如果是本地图片,尽量不要
转载
2024-07-18 22:06:07
14阅读
# iOS ImageView 加载大图的优化方法
在开发中,ImageView加载大图时常会导致卡顿的问题,这会影响用户体验。本文将详细介绍如何优化这一过程,使其更加流畅。
## 整体流程
我们可以总结出以下步骤来优化ImageView加载大图的过程:
| 步骤 | 描述 |
|--------------|----------------
常规思路流程 点击任意小图后: 1.首先制作scrollview框架:大小2个scrollview,小的用于手势缩放单一图片,大的横向依次加载全部照片 2.制作好scrollview框架后,加载照片 3.一切准备就绪跳转页面呈现给用户选择的大图 加载图片这一步,若相册内就10几张照片,那么毫无技术挑战,但是如果是300张照片呢?直接崩溃?还是让用户等待加载? 时间紧任务重,这一步需要拆分和优化。
转载
2023-10-22 13:05:14
77阅读
一、首先 我们先来认识一下 RunLoopRunLoop: 就是运行循环(在程序运行过程中循环做一些事情)应用范围:比如 定时器 GCD 事件响应 手势识别 界面刷新 网络请求等等。先来看一个例子:得到的结果是:程序执行完 14行 程序将会退出。如果是下面这种写法 ,又会是怎么个情况啦。 此时 程序并不会马上退出,而是保持运行状态。UIApplicationMain这个函数并
转载
2024-01-15 13:41:15
35阅读