iOS for...in 循环

news/2025/3/4 19:17:01/

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.ppmy.cn/news/1576619.html

相关文章

【后端开发面试题】每日 3 题(五)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;https://blog.csdn.net/newin2020/category_12903849.html &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享后端开发面试中常见的面试题给大家~ ❤️如果有收获的话&#x…

微服务,服务治理nacos,负载均衡LOadBalancer,OpenFeign

1.微服务 简单来说&#xff0c;微服务架构风格[1]是一种将一个单一应用程序开发为一组小型服务的方法&#xff0c;每个服务运行在 自己的进程中&#xff0c;服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并 且可通过全自动部署机制独立部署。这…

基于AT89C52单片机的停车场车位管理系统

点击链接获取Keil源码与Project Backups仿真图&#xff1a; https://download.csdn.net/download/qq_64505944/90441636?spm1001.2014.3001.5501 C18 部分参考设计如下&#xff1a; 摘要 随着科技的快速发展&#xff0c;交通工具的普及程度和汽车保有量的急剧增加&#xf…

基于深度学习+NLP豆瓣电影数据爬虫可视化推荐系统

博主介绍&#xff1a;资深开发工程师&#xff0c;从事互联网行业多年&#xff0c;熟悉各种主流语言&#xff0c;精通java、python、php、爬虫、web开发&#xff0c;已经做了多年的设计程序开发&#xff0c;开发过上千套设计程序&#xff0c;没有什么华丽的语言&#xff0c;只有…

React 之 Redux 第二十八节 学习目标与规划大纲及概要讲述

接下来 开始Redux 全面详细的文档输出&#xff0c;主要基于一下几个方面&#xff0c;欢迎大家补充指正 一、Redux 基础概念 为什么需要 Redux&#xff1f; 前端状态管理的挑战&#xff08;组件间通信、状态共享&#xff09; Redux 解决的问题&#xff1a;集中式、可预测的状态…

vue3之echarts仪表盘

vue3之echarts仪表盘 效果如下&#xff1a; 版本 "echarts": "^5.5.1" 核心代码&#xff1a; <template><div ref"chartRef" class"circle"></div> </template> <script lang"ts" setup>…

蓝桥杯备赛Day10 位运算

位运算 1.要点 与:& 或:| 异或:^ 非:~ 异或运算性质: (1)x^x0 (2)x^0x (3)a^b^ba(1,2推出) (4)a^bc->ab^c(两侧同异或b) 位运算按补码计算 正数的补码就是正数本身&#xff1b;负数的补码 负数的绝对值正数补码取反 1 正数右移要用unsigned int最后才会变0(int高位…

DeepSeek模型快速部署教程-搭建自己的DeepSeek

前言&#xff1a;在人工智能技术飞速发展的今天&#xff0c;深度学习模型已成为推动各行各业智能化转型的核心驱动力。DeepSeek 作为一款领先的 AI 模型&#xff0c;凭借其高效的性能和灵活的部署方式&#xff0c;受到了广泛关注。无论是自然语言处理、图像识别&#xff0c;还是…