gpt4 book ai didi

iphone - NSMutableArray removeObjectAtIndex : Behaviour

转载 作者:行者123 更新时间:2023-11-28 20:33:57 27 4
gpt4 key购买 nike

我有一个 NSMutableArray,我分配给它:

NSMutableArray *newElements = [[NSMutableArray alloc] initWithObjects:self.currentScene.elements, nil];
//selectedElement is assigned somewhere above this, shouldn't be relevant since it's the same object as the one in the array
int indexToRemove = [self.currentScene.elements indexOfObject:selectedElement];

我正在从此数组中删除 selectedElement,但在调试器中看到一些奇怪的行为。初始化数组后,通过在删除 selectedElement 之前设置断点,我看到了这个:

po newElements
(NSMutableArray *) $2 = 0x08c74e90 <__NSArrayM 0x8c74e90>(
<__NSArrayM 0x8c52e60>(
<StoryTextElement: 0x12ac6e00>,
<StoryTextElement: 0x8ca1a50>
)

)

(lldb) po selectedElement
(StoryElement *) $3 = 0x08ca1a50 <StoryTextElement: 0x8ca1a50>

我正在尝试删除对象:

NSLog(@"count: %d", [newElements count]); // prints count: 1
[newElements removeObject:selectedElement];
NSLog(@"count: %d", [newElements count]); // prints count: 1
[newElements removeObjectAtIndex:indexToRemove]; // throws an exception. indexToRemove is 1 in the debugger
NSLog(@"count: %d", [newElements count]);

我不明白为什么我的对象没有被删除。好像我没捕获重点。

最佳答案

self.currentScene.elements 是一个数组。因此,您正在创建一个新数组,其中包含该数组。 newArray 中的唯一项是 self.currentScene.elements。如果您想创建 self.currentScene.elements 的可变副本,只需使用 mutableCopy

关于iphone - NSMutableArray removeObjectAtIndex : Behaviour,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11232785/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com