gpt4 book ai didi

objective-c - NSArray 可变性和 arrayByAddingObject

转载 作者:行者123 更新时间:2023-12-04 02:55:05 25 4
gpt4 key购买 nike

我认为我对 Objective-C 中的对象和可变性有很好的理解,但我注意到 NSArray 有一些奇怪的地方。

如果我有以下不起作用:

NSArray *myArray = [ [[NSUserDefaults standardUserDefaults] arrayForKey:someKey] arrayByAddingObject:myObject ];

“myObject”永远不会添加到“myArray”

但是,以下是有效的:

NSArray *someArray = [[NSUserDefaults standardUserDefaults] arrayForKey:someKey];
NSArray *myArray = [someArray arrayByAddingObject:myObject];

请问这是怎么解释的?我知道 NSArray 是不可变的,但由于它是在初始赋值期间,它应该可以工作,因为两种方式看起来都是等价的。

[[NSUserDefaults standardUserDefaults] arrayForKey:someKey] 返回一个 NSArray

someArray 是一个 NSArray

因此,NSArray 是从 [NSArray arrayByAddingObject:Object]

派生的

谢谢!

编辑 1

我只是想将 NSArray 存储回 NSUserDefaults:

[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:someKey];

它从未正确存储它,因此当我调试时,我发现在创建数组时从未添加“myObject”。

注意:我只测试过 [[NSUserDefaults standardUserDefaults] arrayForKey:someKey] 返回空/nil 数组

编辑 2

我已经把这个问题隔离开来了; 这只会在 [NSUserDefaults standardUserDefaults] arrayForKey:someKey] 返回“nil” 时发生(基本上,NSUserDefaults 中不存在该数组)。我仍然很想知道为什么这不是我拥有的第二个代码解决方案的问题。

最佳答案

您如何检查是否添加了 myObject?两个代码示例看起来都不错,而且我肯定毫无问题地使用了前者。但你所有的假设都是正确的。这个问题,如果确实存在的话,则在别处。

关于objective-c - NSArray 可变性和 arrayByAddingObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5737415/

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