(ネットで調べてもわかりません)
すべてのコードは 1 つのオブジェクト内にあります。.h ファイルで、NSMutableArray を定義します。そして、私はそれをinitに割り当てます。
-(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 がオブジェクトを見つけられない場合、戻り値は MUTABLE ではないということです。この結論は正しいですか?または、MutableCopy は、Nil で可変としてオブジェクトをアドレス指定できませんか?