ios开发 之 多线程

news2024/11/19 4:22:53

目录

第一节:多线程简介

线程执行原理

主线程

多线程解决方案

pthread

__bridge

NSThread

线程的状态

第二节:多线程访问资源

@Synchronized 

nonatomic 、atomic

自动释放池

属性修饰符

第三节:消息循环

消息模式

第四节:GCD

Barrier

dispatch_once、dispatch_after 

构建单例模式

调度组

第五节:NSOperation

GCD 与 NSOperation 的区别

自定义operation

第六节:案例

第七节:沙盒缓存

第八节:SDWebImage

第九节:关联对象

第十节:NSCache


 

第一节:多线程简介

线程执行原理

主线程

多线程解决方案

pthread

__bridge

因为arc 中,会自动管理内存,但是arc 关不了c 语言,所以在c 语言中,创建的对象要自己去释放,桥接就是告诉c 语言,这个对象要去释放

NSThread

线程的状态

第二节:多线程访问资源

@Synchronized 

这个对象的锁默认是开着的, 开着意味着线程可以执行代码,sychronized 表示加把锁

 

nonatomic 、atomic

自动释放池

 子线程无法使用主线程的自动释放池,所以要自己创建

属性修饰符

总结起来,使用COPY修饰符进行的是浅拷贝,复制的是对象的引用而不是对象本身。由于NSString是不可变的,所以在实际使用中并不会出现问题。如果需要进行深拷贝,可以使用NSMutableString来创建一个可变的字符串副本。 

第三节:消息循环

消息模式

每一个事件和定时器都要有一种模式,它要和线程的模式保持一致,才能运行

第四节:GCD

Barrier

dispatch_once、dispatch_after 

构建单例模式

原始单例是线程不安全的

 

调度组

第五节:NSOperation

GCD 与 NSOperation 的区别

 取消操作就是所有的operation 为cancelled

优先级只能保证该operation 执行的几率更大一些,并不能保证该operation优先于其他operation执行完

自定义operation

第六节:案例

layout subviews 这个方法用来设置控件的 frame 

block 中使用到self,尽量使用__weak ,避免循环引用

第七节:沙盒缓存

第八节:SDWebImage

第九节:关联对象

因为分类中无法添加属性,所以使用关联对象的方式

第十节:NSCache

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1196318.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人工智能基础_机器学习022_使用正则化_曼哈顿距离_欧氏距离_提高模型鲁棒性_过拟合_欠拟合_正则化提高模型泛化能力---人工智能工作笔记0062

然后我们再来看一下,过拟合和欠拟合,现在,实际上欠拟合,出现的情况已经不多了,欠拟合是 在训练集和测试集的准确率不高,学习不到位的情况. 然后现在一般碰到的是过拟合,可以看到第二个就是,完全就把红点蓝点分开了,这种情况是不好的, 因为分开是对训练数据进行分开的,如果来…

三掌柜第2期赠书活动:《计算机考研精炼1000题》

引言 各位朋友大家好,我是三掌柜。今天,三掌柜赠书第2期启动,本次为大家精选了《计算机考研精炼1000题》这本书。关于这本书的内容,非常丰富,涵盖计算机考研的高频知识内容,不管是正在备考,还是…

JUC下常见类

JUC(java.util.concurrent) 的常见类ReentrantLock原子类线程池信号量SemaphoreCountDownLatch JUC(java.util.concurrent) 的常见类 ReentrantLock ReentrantLock可重入互斥锁. 和 synchronized 定位类似, 都是用来实现互斥效果, 保证线程安全。 用法: lock(): 加锁, 如果获…

合同审查---财务条款、合同形式与生效审查

1.合同主体 1人 廖 2.财务条款、合同形式与生效 1人 黄 3.履行、验收、知识产权、不可抗力 1人 詹 4.违约责任、争议解决、保密、法律引用 1人 王 代码规范: 1.代码函数的层级 各审查点在json中分为3级层级,但用python写规则的时候,1级层级为…

【C++那些事儿】类与对象(2)

君兮_的个人主页 即使走的再远,也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们,这里是君兮_,我之前看过一套书叫做《明朝那些事儿》,把本来枯燥的历史讲的生动有趣。而C作为一门接近底层的语言,无疑是抽象且难度颇…

LeetCode 面试题 16.20. T9键盘

文章目录 一、题目二、C# 题解 一、题目 在老式手机上,用户通过数字键盘输入,手机将提供与这些数字相匹配的单词列表。每个数字映射到0至4个字母。给定一个数字序列,实现一个算法来返回匹配单词的列表。你会得到一张含有有效单词的列表。映射…

图书销售数据大屏可视化【可视化项目案例-03】

🎉🎊🎉 你的技术旅程将在这里启航! 🚀🚀 本文选自专栏:可视化技术专栏100例 可视化技术专栏100例,包括但不限于大屏可视化、图表可视化等等。订阅专栏用户在文章底部可下载对应案例源码以供大家深入的学习研究。 🎓 每一个案例都会提供完整代码和详细的讲解,不…

Leetcode-144 二叉树的前序遍历

递归方法 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …

谈谈如何写作(一)

序言 没有什么比一套好理论更有用了。——库尔特勒温 谈谈如何写作? 这个题目就像一本书《如何阅读一本书》,听起来似乎很无趣,因为各位盆友直接的反应,可能是这根本无需理论。 实际情况呢?恰恰相反,往往你…

javax.management.InstanceNotFoundException: Catalina:type=Server错误的解决

软件: JDK 1.8 Tomcat 8.5.66 IDEA 2019.3.3 问题:启动IDEA新建一Web Application项目,设置好项目运行,结果发现提示: 提示:Application Server was not connected before run configuration stop, rea…

JavaSE 类与对象

前言 我们之前学的都是面向过程,面向过程研究的是对单个对象的一种方法实现过程,比如求一个数的阶乘,强调的是怎么实现这个方法的过程,但对我们以后来说,如果想要应用到更广的层面,不能只是学习一个方法的…

基于Qt Linux开发板USER-KEY按键实现

介绍如何在 Qt 应用上使用嵌入式 GET6818 Linux 开发板 上的按键。 工具:Qt Creator 5.14.2 平台:windows ## 资源简介 在GET6818 开发板,开发板板载资源上有两个用户按键。如下图原理图(下图开发板的按键原理图)。 ## 应用实例 想要监测这个 KEY0,首先出厂内核已经…

Linux是什么,Linux系统介绍

很多小伙伴都不是那么了解和知道Linux,到底Linux是什么? 像大家用到的安卓手机,生活中用到的各种智能设备,比如路由器,光猫,智能家具等,很多都是在Linux操作系统上。 Linux是什么?Li…

常见问题: (Windows/app/浏览器)总结及其研究———(不断更新中.....)

问题目录 手机电脑电脑qq如何多开分身电脑与手机无线传送数据的方法 浏览器下载如何利用技术下载网上图片 WindowsVMware Workstation1 无法创建11264MB的匿名分页文件:页面文件2 虚拟机安装Windows11时出现: tempting to start up from: EFI VMware Virtual N 百度…

Vuex:模块化Module :VCA模式

VCA中不支持辅助函数,因为辅助函数中是用this.$store,而VCA中没有绑定this的 由于使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,store 对象就有可能变得相当臃肿。 这句话的意思是,…

开源Gimp动态压感笔刷设置方法

一、问题描述 开源绘画工具的Gimp的笔刷压感在哪里控制和开启呢? 二、解决方法 1、Gimp有专用的笔刷集:如下图。开启需要在主窗口window下拉菜单开启,或在右侧面板里的左箭头按钮里打开。一般绘画够用了。比用自定义特殊笔刷。 2、如果要调…

win11系统提示msvcp140.dll丢失的解决方法,3个有效的解决方法

Win11系统在运行photoshop或其他软件,游戏的时候,电脑提示“找不到msvcp140.dll”,“msvcp140.dll丢失”,“无法定位输入点msvcp140.dll”等问题,都是由于Windows11系统中的msvcp140.dll文件丢失或者损坏了。 一、问题…

【开源】基于Vue.js的大学兼职教师管理系统的设计和实现

目录 一、摘要1.1 项目介绍1.2 项目详细录屏 二、研究内容三、界面展示3.1 登录注册3.2 学生教师管理3.3 课程管理模块3.4 授课管理模块3.5 课程考勤模块3.6 课程评价模块3.7 课程成绩模块3.8 可视化图表 四、免责说明 一、摘要 1.1 项目介绍 大学兼职教师管理系统&#xff0…

HTTP-FLV详解及分析

文章目录 前言一、HTTP-FLV 简介1、市场上使用 http-flv 的商家2、http-flv、rtmp 和 hls 直播的优缺点3、http-flv 技术实现 二、Nginx 配置 http-flv1、Windows 安装 nginx,已经集成 nginx-http-flv-module2、nginx.conf 配置文件3、运行 nginx 服务器4、ffmpeg 推…

Linux系统编程——文件操作原理

文件描述符 1.文件描述符是文件的索引: 对于内核而言,所有打开文件都由文件描述符引用。文件描述符是一个非负整数。当打开一个现存文件或者创建一个新文件时,内核向进程返回一个文件描述符。 int fd1 open("./file1",O_RDWR);…