将nil
传递给arrayWithArray:
后会发生什么?
假设我有以下代码:
NSMutableArray *myArray = [NSMutableArray arrayWithArray:someOtherArray];
如果someOtherArray
恰好是nil
,myArray
是nil
还是空的可变数组?
答案 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对象的消息返回默认返回值对于那种类型,并没有别的。