一、前言 前段时间看了几个开源项目,发现他们保持线程同步的方式各不相同,有@synchronized、NSLock、dispatch_semaphore、NSCondition、pthread_mutex、OSSpinLock。后来网上查了一下,发现他们的实现机制各不相同,性能也各不一样。不好意思,我们平常使用最多的@synchronized是性能最差的。下面我们先分别介绍每个加锁方式的
一、多线程每一个iOS应用程序中都有一个主线程用来更新UI界面、处理用户的触摸事件、解析网络下载的数据,因此不能把一些太耗时的操作(比如网络下载数据)放在主线程中执行,不然会造成主线程堵塞(出现界面卡死,防止界面假死),带来极坏的用户体验。iOS的解决方案就是将那些耗时的操作放到另外一个线程中去执行,多线程异步编程是防止主线程堵塞,增加运行效率的最佳方法异步:多个线程 同时执行 同步:
转载 2023-08-04 07:28:02
183阅读
目录同步/异步编程回调函数1,Promise2,Promise对象的.then方法3,Promise对象的.catch方法4,Promise.all方法 同步/异步编程同步:不意味着所有步骤同时运行,而是指步骤在一个控制流序列中按顺序执行。 异步:不保证同步的概念,也就是说,一个异步过程的执行将不再与原有的序列有顺序关系。异步就是从主线程发射一个子线程来完成任务。 简单来理解就是:同步按代码顺序
 一、atomic介绍github对应Demo:https://github.com/Master-fd/LockDemo      在iOS中,@property 新增属性时,可以增加atomic选项,atomic会给对应对setter方法加锁,相当于- (void)setTestStr:(NSString *)testStr {
1.When to use NSMutableArray and when to use NSArray? 什么时候使用NSMutableArray,什么时候使用NSArray?答案:当数组在程序运行时,需要不断变化的,使用NSMutableArray,当数组在初始化后,便不再改变的,使用NSArray。需要指出的是,使用NSArray只表明的是该数组在运行时不发生改变,即不能往NSAa
转载 2023-11-26 11:09:14
79阅读
iOS应用由于其直接运行在手机上,相比运行在服务器的后台服务,更有可能被黑客攻击。本文将从网络安全、本地文件和数据安全、源代码安全三个方面,阐述iOS应用在安全性上遇到的挑战。 一、网络安全安全地传输用户密码对密码进行非对称加密,加盐,且在发送时采用`HTTP Post`的方式。防止通讯协议被轻易破解选择类似`protobuf`(Google提供的一个开源数据交换格式,其最大的特点是基于二进制,因
# iOS线程安全 ## 简介 在iOS开发中,多线程并发操作是非常常见的场景。然而,多线程操作往往会引发一系列的线程安全问题,例如资源竞争、数据不一致等。这些问题可能导致应用崩溃或者产生不可预期的结果。 线程安全是指多个线程对同一个共享资源进行并发访问时,不会产生不正确的结果,不会破坏数据的一致性和完整性。 在本文中,我们将介绍iOS中常见的线程安全问题,并提供一些常用的解决方案。 #
原创 2023-10-16 07:02:01
96阅读
线程拾遗保持线程同步Dispatch Semaphore如下,不考虑顺序,将所有数据追加到NSMutableArray中dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0); NSMutableArray *array = [[NSMutableArray alloc] in
转载 2023-12-01 12:00:23
141阅读
Apple没有把 UIKit 设计为线程安全的类是有意为之的,将其打造为线程安全的话会使很多操作变慢。而事实上 UIKit 是和主线程绑定的,这一特点使得编写并发程序以及使用 UIKit 十分容易的,你唯一需要确保的就是对于 UIKit 的调用总是在主线程中来进行。 为什么 UIKit 不是线程安全的?performBlock: 和 performBlockAndWait:&
iOS开发多线程篇—线程安全 一、多线程安全隐患资源共享1块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源比如多个线程访问同一个对象、同一个变量、同一个文件当多个线程访问同一块资源时,很容易引发数据错乱和数据安全问题示例一:示例二:问题代码: 1 // 2 // YYViewController.m 3 // 05-线程安全 4 // 5 // Creat
iOS 上不建议在非主线程进行UI操作,在非主线程进行UI操作有很大几率会导致程序崩溃,或者出现预期之外的效果。我开始不知道这一点,在子线程中进行了弹窗操作,结果程序就出问题了!报的错误是(EXC_BAD_ACCESS(code=2,address=0xcc),0x1a0ad32: movl 204(%ecx), %edx ),我以为是空指针导致的内存泄露,用了很多方法,但这问题感觉很顽
转载 2023-07-12 20:24:49
395阅读
  一般的服务器都需要线程池,比如Web、FTP等服务器,不过它们一般都自己实现了线程池,比如以前介绍过的tomcat、Resin和Jetty等,现在有了JDK5,我们就没有必要重复造车轮了,直接使用就可以,何况使用也很方便,性能也非常高.package concurrent; import java.util.concurrent.ExecutorService; impo
鄙人在多线程开发过程中遇到一个问题:代码中的子线程需要在循环中不断操作UI线程,但是在关闭UI窗口时,却提示“无法访问已释放的对象”。为了重现这个问题,本文使用多线程实现了一个简易的“小时钟”,时钟能够动态地显示当前的系统时间,时间更新间隔为1s。当然,我们完全可以使用Timer来实现这样一个“小时钟”,但是为了说明问题,我就勉强的使用多线程吧,就算有点“小题大做”之嫌,也请大家将就一下。程序的运
Core Data是iOS中很重要的一个部分,可以理解为基于SQLite(当然也可以是其他的Storage,如In-memory,只是SQLite比较常见)的一个ORM实现,所以有关系数据库的特性,又不用写SQL。顺便吐一下槽,官方说法是使用Core Data能减少50%-70%的代码量,但相信用过的人应该都心里明白,Core Data使用起来还是比较麻烦的,这也是为什么有不少的第三方类库来代替/
转载 2024-03-08 09:32:34
95阅读
iOS开发中,有时会遇到使用OpenCV进行图像处理时,子线程崩溃的情况。这个问题不仅影响了应用的稳定性,也可能导致数据丢失,从而影响用户体验,给业务带来不良影响。 ### 问题背景 在我们的iOS项目中,我们依赖OpenCV库对图像进行实时处理。这个需求对图像处理性能和流畅度有很高的要求,因此我们通常会在子线程中进行操作。按照预期,用户上传的图像将被送入OpenCV的处理逻辑中。然而,最近
原创 6月前
47阅读
目录1、线程是否安全2、出现线程安全的原因如下:3、原子性问题4、synchronized关键字1、锁对象2、用法:3、可重入锁5、内存可见性6、volatile关键字7、JMM1、线程是否安全线程安全就是一些代码在多线程的运行状态下,达不到预期的运行效果出现bug。如果在多线程的各种随机调度上,代码都没有bug,能以预期的结果运行那么该线程就是安全的。2、出现线程安全的原因如下:1、线程之间的
在上一篇中有20道iOS面试题,这是其后半部分。 1.When to use NSMutableArray and when to use NSArray? 什么时候使用NSMutableArray,什么时候使用NSArray?答案:当数组在程序运行时,需要不断变化的,使用NSMutableArray,当数组在初始化后,便不再改变的,使用NSArray。需要指出的是,使用NSA
转载 2024-05-24 21:49:33
91阅读
去年我开始负责iOS崩溃治理的工作,从原来的万分之六崩溃率,一直到现在的万分之一左右的崩溃率,期间踩了很多坑,因此想和大家分享一下,希望能对大家有所帮助,也欢迎大家私信交流。 如果你打算开始治理崩溃的话,建议你先想一下以下的问题: 如何高效地去定位修复崩溃?修复线上收集到的崩溃,可以说这是无法避免的体力活,大部分的崩溃事实上并不复杂,都不难解决,但怎么快速定位是个问题。大部分的
转载 2023-07-26 08:33:40
193阅读
iOS线程技术—线程安全 一、多线程安全隐患资源共享1块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源比如多个线程访问同一个对象、同一个变量、同一个文件当多个线程访问同一块资源时,很容易引发数据错乱和数据安全问题示例一:示例二:问题代码:1 // 2 // YYViewController.m 3 // 05-线程安全 4 // 5 // Created
1.什么时候使用NSMutableArray,什么时候使用NSArray?当数组在程序运行时,需要不断变化的,使用NSMutableArray,当数组在初始化后,便不再改变的,使用NSArray。NSArray是线程安全的,NSMutableArray不是线程安全的,多线程使用到NSMutableArray需要注意。 2.给出委托方法的实例,并且说出UITableVIew的Data So
转载 2023-08-19 17:41:57
149阅读
  • 1
  • 2
  • 3
  • 4
  • 5