gpt4 book ai didi

objective-c - 如何在 objC 中存储一个 nil 指针数组?

转载 作者:搜寻专家 更新时间:2023-10-30 19:54:11 25 4
gpt4 key购买 nike

我想使用指向对象实例的指针数组,但只想在需要时(即懒惰地)创建这些对象的实例。该数组对应于 UI 中的一个表,因此每个数组索引对应一个表行。

我想使用 NSMutableArray 来保存指向创建对象实例的指针(当用户在 UI 中选择相应的行时发生)。

如果选择了表中的一行,则检查相应的数组条目。如果指针值为 nil,则实例尚未创建,因此此时创建实例,对象指针存储在相应的索引数组条目中。

显然,这要求我首先从一个 nil 指针数组开始,但 objC 不允许我将 nil 指针放入 NSArray。

我不能在创建对象时就将它们添加到数组中,因为数组索引不会对应于表行。

最好的 objC 解决方案是什么?

最佳答案

Objective C 中惯用的解决方案是使用 NSNull :

The NSNull class defines a singleton object used to represent null values in collection objects (which don’t allow nil values).

创建你的 NSMutableArray,并用 [NSNull null] 对象填充它:

NSMutableArray *array = [NSMutableArray arrayWithCapacity:N];
for (int i = 0 ; i != 10 ; [a addObject:[NSNull null]], i++);

当您检查 NSMutableArray 中是否存在对象时,将索引处的对象与 [NSNull null] 进行比较:如果它们相同,则替换有一个真实的对象;否则,真实对象已经存在。

if ([array objectAtIndex:index] == [NSNull null]) {
MyRealObject realObject = [[MyRealObject alloc] init];
[array replaceObjectAtIndex:index withObject:realObject];
}

** 编辑摘要 ** 编辑以使用循环初始化数组(感谢 bbum)。

关于objective-c - 如何在 objC 中存储一个 nil 指针数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11591504/

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