iOS开发:Objective - C实现线程安全的NSMutableArray方法及示例
在 Objective-C 中,`NSMutableArray` 已经是一个线程安全的类。你可以在多个线程中安全地使用它,只要你不是在多个线程中同时修改它。 如果你需要创建一个自定义的线程安全的类,你可能需要使用互斥锁 (mutex) 或者其他同步机制来确保线程安全。下面是一个使用互斥锁的例子: ```objective @interface MyThreadSafeArray : NSObject @property (nonatomic, strong) NSMutableArray *array; @property (nonatomic, strong) NSLock *lock; - (instancetype)initWithArray:(NSMutableArray *)array; - (void)addObject:(id)object; - (void)removeObject:(id)object; // 你可以添加其他线程安全的方法 @end @implementation MyThreadSafeArray - (instancetype)initWithArray:(NSMutableArray *)array { if (self = [super init]) { _array = array; _lock = [[NSLock alloc] init]; } return self; } - (void)addObject:(id)object { __block id __strong item; [self.lock lock]; item = self.array.lastObject; // 获取最后一个元素,这里假设你的数组不会为空 [self.array addObject:object]; // 添加元素到数组 [self.lock unlock]; } - (void)removeObject:(id)object { __block id __strong item; [self.lock lock]; item = self.array.lastObject; // 获取最后一个元素,这里假设你的数组不会为空 [self.array removeObject:object]; // 从数组中移除元素 [self.lock unlock]; } // 你可以添加其他线程安全的方法,例如:replaceObjectAtIndex:withObject:等等。 @end ``` 在上述代码中,我们创建了一个自定义的类 `MyThreadSafeArray`,它包含一个 `NSMutableArray` 和一个 `NSLock`。每次我们要修改数组时,我们首先获取锁,然后进行修改,最后释放锁。这样,如果其他线程也试图修改数组,它们将会被阻塞,直到我们释放锁。这就确保了线程安全。 ######[AI写代码神器 | 508点数解答 | 2023-11-09 17:42:40]
- Java 实现计算机硬件模拟:从 PCI 设备到主板、计算机的启动与关闭(字节豆包 | 716点数解答 | 2024-12-08 23:38:38)331
- Java 代码:模拟计算机主板启动与关闭 PCI 设备全流程(字节豆包 | 637点数解答 | 2024-12-09 08:31:54)301
- 代码优化:提升“生命值监控模块”代码的健壮性与性能 (阿里通义 | 721点数解答 | 2024-10-19 15:16:56)301
- Java实现链表反转:迭代与递归双解法详解及开发实战指南(DeepSeek | 1409点数解答 | 2026-03-15 15:09:29)33
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)350
- Java 实战:Vehicle 类与 User 类实现机动车速度功率控制( | 968点数解答 | 2024-03-12 11:26:25)549
- 探寻数组中最长摆动子序列长度:思路剖析与代码优化(GPT | 758点数解答 | 2024-12-23 23:18:29)274
- 独家剖析:求解数组最长摆动子序列长度的代码实现与改进建议(GPT | 350点数解答 | 2024-12-23 23:20:54)271
- Java 实战:动物类、接口与继承实现鸟儿吃虫和飞翔功能(字节豆包 | 183点数解答 | 2024-09-19 15:53:55)292
- Java 实战:动物类、接口与继承,实现鸟儿吃虫与飞翔功能(字节豆包 | 184点数解答 | 2024-09-19 16:45:48)313
- Java 实现 BankAccount 类:账户余额管理与测试全解析(字节豆包 | 420点数解答 | 2024-10-11 08:48:21)319
- Java 编程:实现教师与学生类的创建、继承及属性操作(字节豆包 | 745点数解答 | 2024-10-16 18:40:42)399