- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我认为我对 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/
我认为我对 Objective-C 中的对象和可变性有很好的理解,但我注意到 NSArray 有一些奇怪的地方。 如果我有以下不起作用: NSArray *myArray = [ [[NSUserDe
我是一名优秀的程序员,十分优秀!