删除 for 循环中的项目没有副作用?
我可以删除在 Objective-C for
循环中循环的项目而不产生副作用吗?
例如,这样可以吗?
for (id item in items) {
if ( [item customCheck] ) {
[items removeObject:item]; // Is this ok here?
}
Can I remove items that I am looping through in an Objective-C for
loop without side effects?
For example, is this ok?
for (id item in items) {
if ( [item customCheck] ) {
[items removeObject:item]; // Is this ok here?
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不,如果您在快速枚举 for 循环中改变数组,您会收到错误。复制该数组,对其进行迭代,然后从原始数组中删除。
No, you'll get an error if you mutate the array while in a fast enumeration for loop. Make a copy of the array, iterate over it, and remove from your original.
不:
使用枚举器:复制数组并枚举,或者构建一个在循环后使用的索引集。
Nope:
Options for changing an array that you want to enumerate through are given in Using Enumerators: either copy the array and enumerate through, or build up an index set that you use after the loop.
你可以像这样删除:
you can remove like this: