前言 YYAsyncLayer是异步绘制与显示的工具。最初是从YYKitDemo中接触到这个工具,为了保证列表滚动流畅,将视图绘制、以及图片解码等任务放到后台线程,在YYAsyncLayer之前还是想从YYKitDemo中性能优化说起,虽然些跑题了… YYKitDemo 对于列表主要对两个代理方法的优化,一个与绘制显示有关,另一个与计算布局有关:- (UITableV
转载
2023-11-22 21:51:56
67阅读
错误的四个象限分类同步是需要主动等待消息通知,而异步则是被动接收消息通知,通过回调、通知、状态等方式来被动获取消息。IO多路复用在阻塞到select阶段时,用户进程是主动等待并调用select函数获取数据就绪状态消息,并且其进程状态为阻塞。所以,把IO多路复用归为同步阻塞模式。I/O多路复用就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行
转载
2023-07-17 23:49:03
73阅读
“一个菜鸟的自我修养,就是在低级职位上不抓狂,当一个优秀的菜鸟,就是为了有一天不当菜鸟。瞅准机会迅速脱离菜鸟轨道,然后一路飞翔到世界的尽头。“ 接下来系统的学习下并发编程,会有几篇吧,不多说,走起! 简介: 1.异步设计方式:传统并发编程模型是线程,ios采用“异步设计方式”来解决并发的问题;-也就是一个
转载
2023-08-16 18:43:34
44阅读
参考地址:https://blog.ibireme.com/2015/11/12/smooth_user_interfaces_for_ios/很久以前就看过这篇文章,但是也只是看过就过了,没有去整理思路,最近有时间把一些点整理一下.通读下来可以总结一下对性能优化,在这里也就是提高界面流畅度的宗旨只有一句话唯而已:把能异步执行的都尽量异步执行.在我这篇里主要记录一下文本的异步绘制,先上两个视频,异
转载
2023-09-15 15:30:39
77阅读
在 UIView 中有一个 CALayer 的属性,负责 UIView 具体内容的显示。具体过程是系统会把 UIView 显示的内容(包括 UILabel 的文字,UIImageView 的图片等)绘制在一张画布上,完成后倒出图片赋值给 CALayer 的 contents 属性,完成显示。这其中的工作都是在主线程中完成的,这就导致了主线程频繁的处理 UI 绘制的工作,如果要绘制的元素过多,过于频
转载
2023-08-29 21:35:45
158阅读
IOS UIScrollView
2012-07-24 19:35 9195人阅读 评论(3) 收藏 举报
iosjavauiviewfloatiphone文档
UIScrollView 类负责所有基于 UIKit 的滚动操作。
一、创建
[java] view plaincopy
CGRect bounds = [ [ UIScreen mainScreen ] applicationFra
作者 | Mkit 一、需求背景1、现状iOS所提供的UIKit框架,其工作基本是在主线程上进行,界面绘制、用户输入响应交互等等。当大量且频繁的绘制任务,以及各种业务逻辑同时放在主线程上完成时,便有可能造成界面卡顿,丢帧现象,即在16.7ms内未能完成1帧的绘制,帧率低于60fps黄金标准。目前常用的UITableView或UICollectionView,在大量复杂文本及图片内容填充后
转载
2023-07-24 23:36:20
128阅读
异步绘制UIKit的单线程天性意味着寄宿图通畅要在主线程上更新,这意味着绘制会打断用户交互,甚至让整个app看起来处于无响应状态。我们对此无能为力,但是如果能避免用户等待绘制完成就好多了。针对这个问题,有一些方法可以用到:一些情况下,我们可以推测性地提前在另外一个线程上绘制内容,然后将由此绘出的图片直接设置为图层的内容。这实现起来可能不是很方便,但是在特定情况下是可行的。Core Ani
转载
2023-09-13 12:53:13
84阅读
一、iOS 的图片加载如下所示,加载图片的代码:- (void)imageLoad {
UIImage *image = [UIImage imageNamed:@"xxxxxxx"];
_imageView.image = image;
}UlImage 是 iOS 中处理图像的高级类,创建一个 UlImage 实例只会加载 Data Buffer,将图像显示到屏幕上才会触发解码,也就是 D
转载
2023-08-28 19:32:32
144阅读
“一个IO操作其实分成了两个步骤:发起IO请求和实际的IO操作。 同步IO和异步IO的区别就在于第二个步骤是否阻塞,如果实际的IO读写阻塞请求进程,那么就是同步IO。
阻塞IO和非阻塞IO的区别在于第一步,发起IO请求是否会被阻塞,如果阻塞直到完成那么就是传统的阻塞IO,如果不阻塞,那么就是非阻塞IO。
同步和异步是针对应用程序和内核的交互而言的,同步指的是用户进程触发IO操作并等待或者轮询的去查
转载
2023-07-16 23:11:12
91阅读
有两种类型的文件IO同步:同步文件IO和异步文件IO。异步文件IO也就是重叠IO。 在同步文件IO中,线程启动一个IO操作然后就立即进入等待状态,直到IO操作完成后才醒来继续执行。而异步文件IO方式中,线程发送一个IO请求到内核,然后继续处理其他的事情,内核完成IO请求后,将会通知线程IO操作完成了。 如果IO请求需要大量时间执行的话,异步文件IO方式可以显著提高效率,因为在线程等待的这段时间内,
转载
2023-09-23 13:20:22
43阅读
IOS 图片异步加载 - UIImageView(AFNetworking)说明 :AFNetworking是一个在进行iOS和Mac OS X 开发时使用广泛的第三方网络类库, 他建立在系统的URL加载系统框架之上, 扩展了Cocoa中更强大, 更高级网络提取功能.它有一个与精心设计的模块化的体系结构, 以及功能丰富的api介绍, 相信使用它会是一件快乐的事情.UIImageView(AFNet
转载
2024-02-19 17:22:33
38阅读
select、poll、epoll都是IO多路复用的机制。I/O多路复用就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select、poll、epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内
转载
2023-12-21 11:28:23
39阅读
iOS 异步渲染原理
在现代应用开发中,用户体验的流畅性至关重要。尤其是在 iOS 平台上,如何实现高效的异步渲染,不仅影响应用的运行效率,更关系到用户的使用感受。接下来,咱们将通过对 iOS 异步渲染原理进行深入分析,来探讨如何将这一技术有效应用于实际开发中。
## 背景描述
异步渲染是 iOS 开发中的一项重要技术,它能够在处理复杂 UI 绘制时,提高帧率,减少界面卡顿现象。为了帮助理解
写在前面在iOS开发中,无论是在UITableView还是在UICollectionView中,通过网络获取图片设置到cell上是较为常见的需求。尽管有很多现存的第三方库可以将下载和缓存功能都封装好了供开发者使用,但从学习的角度出发,看懂源码,理解其中的原理,结合自身的实际需求写出自己的代码是很必要的。在刚结束的Demo中,有用到异步图片下载功能,这篇笔记就是对整个实现的简单整理。基本思路cell
转载
2023-11-09 04:30:23
43阅读
layer
.
cornerRadius’方法十分的耗性能
tableView的性能优化
不要动态的修改’cornerRadius’之类图层渲染相关的属性,因为CornerRadius 耗性能,而tableView是从缓冲池中获取的可重用的cell,然后设置模型,如果在tableView的cell中设置圆角图层属性,在界面上会不断的重绘,例如,给cell中的图片
转载
2024-08-16 19:05:16
5阅读
I/O 既 输出/输入 (Input/Output)既然是输入输出,为什么又会有同步和异步的不同方式呢?同步 当一个IO操作进行时,系统停下来等待这个IO的操作完成后才会继续进行下面的计算。异步 当一个IO操作进行时,通过多线程等方法,当CPU去处理那些不需要依赖IO执行结果的计算,充分的利用CPU的运算能力。当IO操作执行完毕时,继续执行后续的操作。一般情况下,作为单机程序或者IO反应速度非常快
转载
2023-09-25 21:34:06
57阅读
在iOS的绘图机制那篇文章中,我说了很多大道理,现在我觉得应该摆上台来说程序本身的主题了。当说完程序本身的主题,我再引入绘图如何去定制我们的视图(UIView),估计大家就会和我一样收获很多。我们说过iOS的基本绘图机制用的是它的CGxxxx系列函数,CG就是Core Graphics,我叫核心图形库。那我们按照主题一个一个来聊吧(我这里提出来的主题就是苹果官方提出来的主题,我试图通俗一点介绍)。
转载
2023-11-14 09:15:00
61阅读
IO(BIO)和NIO的区别:其本质就是阻塞和非阻塞的区别。 阻塞概念:应用程序在获取网络数据的时候,如果网络传输数据很慢,那么程序就一直等着,直到传输完毕为止。 非阻塞概念:应用程序直接可以获取已经准备就许好的数据,无需等待。 IO为同步阻塞形式,NIO为同步非阻塞形式。NIO并没有实现异步,在JDK1.7只后,升级了NIO库包,支持异步非阻塞通信模型即NIO2.0
转载
2023-07-24 19:45:50
77阅读
异步 IO 节省了大量因为要同步一个流程,而使用 CPU 资源进行等待的时间。在这段时间内,我们可以做其它的事,然后再把当前线程挂起,或者直接挂起。注意,挂起线程后,线程是不占用 CPU 时间的。异步 IO 必须结合事件通知或者回调才能完成。这在前一篇文章中已经说明了。上一篇文章还说了,基于回调的方法,回调函数实际上是由操作系统去执行的,所以它也有明显的缺点,即,如果回调函数过多,它必然会直接影响
转载
2024-06-18 11:21:45
54阅读