【发布时间】:2012-11-28 15:39:29
【问题描述】:
(我在网上找不到这个)
所有代码都在一个对象中。在 .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:集合是非常基本的。
-(void)loadDefinitionData{
definitionArray=[[[NSUserDefaults standardUserDefaults] objectForKey:@"SOMEKEY"] mutableCopy];
}
我在 init 函数中添加了 isKindOfClass 只是为了调试。有趣的部分 这是因为当可以从 NSUserDefaults。但是,如果 @"SOMEKEY" 不可用,则 objectForKey 返回一个 nil 并且定义数组突然是不可变的。即使指定了 mutableCopy。
所以我的结论是如果一个objectForKey找不到对象,返回值为 不可变。这个结论正确吗? 或者 MutableCopy 不能将一个对象作为可变对象来处理,因为它是 Nil?
【问题讨论】:
标签: xcode nsmutablearray immutability mutable