gpt4 book ai didi

xcode - 对象为 Nil 时的行为 MutableCopy

转载 作者:行者123 更新时间:2023-12-02 00:15:06 25 4
gpt4 key购买 nike

(我在网上找不到这个)

所有代码都在一个对象中。在 .h 文件中,我定义了一个 NSMutableArray。我分配它
在一个初始化。

-(id)init{
self = [super init];
if(self) {
definitionArray=[[NSMutableArray alloc] init];
[self initialLoadDefinitionData];

if([definitionArray isKindOfClass:[NSMutableArray class]]) {
NSLog(@"Array is Mutable");
} else {
NSLog(@"Array is Not Mutable");
}

}
return self;
}

我想根据 NSUserDefaults 值进行初始化,所以我从
在里面。这称为initialLoadDefinitionData:theCollection 是非常基本的。
-(void)loadDefinitionData{
definitionArray=[[[NSUserDefaults standardUserDefaults] objectForKey:@"SOMEKEY"] mutableCopy];
}

我在 init 函数中添加了 isKindOfClass 只是为了调试目的。有趣的部分
这是因为当数据可以从
NSUserDefaults。但是,如果 @"SOMEKEY"不可用,则 objectForKey 返回一个
nil 和 definitionArray 突然是不可变的。即使指定了 mutableCopy。

所以我的结论是,如果 objectForKey 找不到对象,则返回值是
不可变。这个结论正确吗?
或者 MutableCopy 不能将一个对象作为可变对象寻址,因为它是 Nil?

最佳答案

不,你的结论是不正确的。如果objectForKey返回 nil那么你正在发送一个 mutableCopy留言给 nil当然返回 nil (ObjC 中发送到 nil 的每条消息都返回 nil )这就是为什么你会看到 else部分。 (Array is Not Mutable 消息具有误导性,因为此时您甚至没有 NSArray 实例)。

关于xcode - 对象为 Nil 时的行为 MutableCopy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13608795/

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