gpt4 book ai didi

ios - 索引处的 NSMutableArray insertObject = 0 创建空指针

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:08:51 24 4
gpt4 key购买 nike

我有一个 NSMutable 数组,用于存储一些初始数字。我想要做的是能够查看数字,并且在某些情况下,删除该项目并用另外两个替换它。

我的插入/替换代码似乎在索引 > 0 时有效,但是,当我尝试插入对象 AtIndex:0 时,它不会在 0 处插入任何内容,而是在数组末尾放置一个空对象。

为了显示插入问题,我可以创建一个空的 iOS 应用程序。

我将 NSMutableArray 创建为 ViewController 的一个属性:

@property (strong) NSMutableArray *testArray;

然后在实现中:

self.testArray = [[NSMutableArray alloc] init];

[self.testArray addObject: [NSNumber numberWithInteger:1]];
[self.testArray addObject: [NSNumber numberWithInteger:2]];

[self.testArray insertObject:[NSNumber numberWithInteger:3] atIndex:0];

如果我在插入后放置一个断点,调试器会显示: [0] = (id) 0x07123180 (int) 1 [1] = (id) 0x07614210 (int) 2 [2] = (id) 0x00000000

我期望在位置 0 处看到 (int) 3。

如果我设置 atIndex:1,我会得到: [0] = (id) 0x07123180 (int) 1 [1] = (id) 0x07131fb0 (int) 3 [2] = (id) 0x07614210 (int) 2

哪个是正确的。

为什么 index = 0 不起作用?

最佳答案

对我有用:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

@autoreleasepool {

NSMutableArray *testArray = [[NSMutableArray alloc] init];

[testArray addObject: [NSNumber numberWithInteger:1]];
[testArray addObject: [NSNumber numberWithInteger:2]];
[testArray insertObject:[NSNumber numberWithInteger:3] atIndex:0];

for (NSNumber *num in testArray)
NSLog(@"%@", num);

}
return 0;
}

2013-09-15 09:51:18.266 ArrayTest[890:303] 3
2013-09-15 09:51:18.269 ArrayTest[890:303] 1
2013-09-15 09:51:18.269 ArrayTest[890:303] 2
Program ended with exit code: 0

如果我中断 for 语句并使用 lldb:

(lldb) po testArray
<__NSArrayM 0x100109120>(
3,
1,
2
)

(这是在 Mavericks DP 7 下使用 Xcode 5 DP 6)。

关于ios - 索引处的 NSMutableArray insertObject = 0 创建空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18810564/

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