将nil传递给arrayWithArray的结果是什么:?

时间:2012-05-22 22:19:28

标签: objective-c cocoa nsmutablearray nsarray

nil传递给arrayWithArray:后会发生什么?

假设我有以下代码:

NSMutableArray *myArray = [NSMutableArray arrayWithArray:someOtherArray];

如果someOtherArray恰好是nilmyArraynil还是空的可变数组?

1 个答案:

答案 0 :(得分:10)

返回一个空数组。

+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为空,-count返回0,则没有任何内容malloc',并且没有任何内容被复制,因为发送给nil对象的消息返回默认返回值对于那种类型,并没有别的。