(我在网上找不到这个)
所有代码都在一个对象中。在 .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 值进行初始化,所以我从 init 调用另一个函数。这称为 initialLoadDefinitionData:theCollection 是非常基本的。
-(void)loadDefinitionData{
definitionArray=[[[NSUserDefaults standardUserDefaults] objectForKey:@"SOMEKEY"] mutableCopy];
}
我在 init 函数中添加了 isKindOfClass 仅用于调试目的。有趣的是,当可以从 NSUserDefaults 获取数据时,该 IF 语句返回 MUTABLE。但是,如果 @"SOMEKEY" 不可用,则 objectForKey 返回 nil,并且 definitionArray 突然变为 IMMUTABLE。即使指定了 mutableCopy。
所以我的结论是,如果 objectForKey 找不到对象,则返回值是 NOT MUTABLE。这个结论正确吗?或者不能 MutableCopy 不能处理一个对象,因为它是 Nil 的可变对象?