Why are class methods such as

```
+ (NSMutableArray *)array;

```

needed when there are perfectly fine parent class methods such as

```
+ arrayWithObjects:(id)firstObj, ...;

```

which could be set to

```
[array arrayWithObjects:nil]

```

and have the same effect.

Are they actually not equivalent things?