5

に渡すnilとどうなりarrayWithArray:ますか?

次のコードがあるとしましょう。

NSMutableArray *myArray = [NSMutableArray arrayWithArray:someOtherArray];

someOtherArrayが起こった場合、それは空の可変配列になるのでしょうか、それともそうなるのでしょうnilmyArraynil

4

1 に答える 1

13

空の配列が返されます。

の実装例+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オブジェクトに送信されたメッセージは、そのタイプのデフォルトの戻り値を返し、他には何もしないため、何もコピーされません。

于 2012-05-22T22:32:16.150 に答える