NSArray および NSMutableArray+arrayWithArray:
は、引数が nil の場合、nil ではなく空の配列を返します。
NSLog(@"%@", [[NSArray arrayWithArray:nil] class]);
NSLog(@"%@", [[NSMutableArray arrayWithArray:nil] class]);
出力:
__NSArrayI
__NSArrayM
ただし、この動作は Apple のドキュメントには記載されていません。
arrayWithArray:nil
空の配列を返すという仮定に頼るのは安全ですか?
または、次のように空の配列を明示的に割り当てる必要があります。
NSDictionary *dic = [[NSDictionary alloc] init];
NSMutableArray *arr = [dic objectForKey:@"a"];
if (!arr) {
arr = [[NSMutableArray alloc] init];
}