当前位置: 首页 > news >正文

iOS for...in 循环

0x00 循环遍历一

输出结果是什么?

NSMutableArray *marr = @[@1, @2, @3].mutableCopy;
for (NSNumber *number in marr) {
    NSLog(@"%@", number);
    marr = @[@4, @5, @6].mutableCopy;
}
NSLog(@"%@", marr);

0x01 循环遍历二

输出结果是什么?

NSMutableArray *marr = @[@1, @2, @3].mutableCopy;
for (NSNumber *number in marr) {
    NSLog(@"%@", number);
    [marr addObject:@4];
}
NSLog(@"%@", marr);

0x02 循环遍历三

输出结果是什么?

var arr = [1, 2, 3]
for number in arr {
    print(number)
    arr = [4, 5, 6]
}
print(arr)

0x03 循环遍历四

输出结果是什么?

var arr = [1, 2, 3]
for number in arr {
    print(number)
    arr.append(4)
}
print(arr)

0x04 答案

循环遍历一,输出:
1
2
3
(
4,
5,
6
)


循环遍历二:
打印 1 后,崩溃:
*** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSArrayM: 0x60000075c3c0> was mutated while being enumerated.'


循环遍历三,输出:
1
2
3
[4, 5, 6]


循环遍历四,输出:
1
2
3
[1, 2, 3, 4, 4, 4]


0x05 结论

for…in 循环过程中,OC 不能修改集合,Swift 可以修改
直接改变指向,都没问题!

特性Objective-CSwift
集合类型类对象(NSArray、NSMutableArray)值类型(Array、Dictionary)
内存管理引用计数(ARC)值类型(栈内存),引用类型(ARC)
枚举行为快速枚举,修改集合会导致崩溃基于迭代器协议,值类型修改不影响枚举
修改集合的影响直接修改集合会导致崩溃值类型修改不影响枚举,引用类型可能崩溃

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

相关文章:

  • Phpstudy中的MySQL无法正常启动或启动后自动暂停,以及sqlilab环境搭建出现的问题解决方法
  • ORM Bee V2.5.2.x 发布,支持 CQRS; sql 性能分析;更新 MongoDB ORM分片
  • 014存储期(时间)
  • Qt之QStateMachine等待
  • C++20 Lambda表达式新特性:包扩展与初始化捕获的强强联合
  • Is Noise Conditioning Necessary for Denoising Generative Models?论文阅读笔记
  • 开源向量数据库Milvus简介
  • RNN实现精神分裂症患者诊断(pytorch)
  • 在日常工作中,有一块新磁盘,如何扩容到vm中,具体命令是什么?
  • XSL 语言:XML 样式表的语言基础与应用
  • 初识uniApp
  • 【Java项目】基于SpringBoot的Java学习平台
  • 在Ubuntu中,某个文件的右下角有一把锁的标志是什么意思?
  • 在什么情况下需要使用光谱相机呢?
  • 《Neurocomputing》投稿历程
  • 从UNIX到Linux:操作系统进化史与开源革命
  • 模拟器DTXMania的DTX文件格式规范
  • 挺逼真:AI绘画+AI扩图,已解锁,无限次生成~~~
  • 「Selenium+Python自动化从0到1②|2025浏览器操控7大核心API实战(附高效避坑模板))」
  • 基于trl复现DeepSeek-R1的GRPO训练过程
  • python之线程池ThreadPoolExecutor笔记
  • 单片机栈和堆、FALSH、区别
  • OpenEuler学习笔记(三十五):搭建代码托管服务器
  • #渗透测试#批量漏洞挖掘#某图创图书馆集群管理系统updOpuserPw SQL注入(CVE-2021-44321)
  • 如何杀死僵尸进程?没有那个进程?
  • 在线流式TTS
  • 【Java项目】基于SpringBoot的财务管理系统
  • 【Spring】Spring AOP原理
  • 一、图像图像的基本概念
  • 以太坊标准合约-ERC标准