に渡すnilとどうなりarrayWithArray:ますか?
次のコードがあるとしましょう。
NSMutableArray *myArray = [NSMutableArray arrayWithArray:someOtherArray];
someOtherArrayが起こった場合、それは空の可変配列になるのでしょうか、それともそうなるのでしょうnilかmyArray?nil
に渡すnilとどうなりarrayWithArray:ますか?
次のコードがあるとしましょう。
NSMutableArray *myArray = [NSMutableArray arrayWithArray:someOtherArray];
someOtherArrayが起こった場合、それは空の可変配列になるのでしょうか、それともそうなるのでしょうnilかmyArray?nil
空の配列が返されます。
の実装例+arrayWithArray:は次のとおりです。
+(id) arrayWithArray:(NSArray *) arr
{
NSMutableArray *returnValue = [NSMutableArray new];
returnValue->objectsCount = [arr count];
returnValue->objectsPtr = malloc(sizeof(id) * returnValue->objectsCount);
[arr getObjects:returnValue->objectsPtr range:NSMakeRange(0, returnValue->objectsCount)];
return returnValue;
}
したがって、arrがnullの場合、 -count0が返され、何も返さmallocれません。nilオブジェクトに送信されたメッセージは、そのタイプのデフォルトの戻り値を返し、他には何もしないため、何もコピーされません。