gpt4 book ai didi

iphone - mutableArray 无法存储 nil 对象

转载 作者:行者123 更新时间:2023-12-03 19:32:31 25 4
gpt4 key购买 nike

我有一个保留并存储多个对象的可变数组。在某一时刻,一个对象可能会变成零。当这种情况发生时,应用程序将崩溃,因为数组不能有 nil 对象。想象一下类似的事情

[对象1,对象2,对象3,无];

那么,object2 = nil

[对象1,nil,对象3,nil];

这是不可能的,因为 nil 是数组标记的末尾。那么,我该如何解决这个问题呢?感谢您的帮助。

最佳答案

如果必须存储空占位符对象,请使用[NSNull null]

例如:

NSArray * myArray = [NSArray arrayWithObjects:obj1, [NSNull null], obj3, nil];

myArray 将包含 3 个对象。当你检索对象时,你可以做一个简单的指针相等测试来看看它是否是空单例:

id object = [myArray objectAtIndex:anIndex];
if (object == [NSNull null]) {
//it's the null object
} else {
//it's a normal object
}

编辑(回复评论)

@Mike 我认为你对实际发生的事情感到困惑。

如果你有:

id obj = ...;

然后obj包含一个地址。它不包含对象。因此,如果您执行 NSLog(@"%p", obj),它会打印类似 0x1234567890 的内容。当您将 obj 放入数组时,它并不是复制该对象,而是复制该对象的地址。所以该数组实际上包含0x1234567890。因此,当您稍后执行:obj = nil; 时,您只会影响数组外部的指针。该数组仍将包含 0x1234567890

关于iphone - mutableArray 无法存储 nil 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2594081/

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