Question: Say I wanna create an array of images and i used this:

```
NSMutableArray *images = [[NSMutableArray alloc]init];

```

what role does init really play here? won't it work if I simply use:

```
NSMutableArray *images = [NSMutableArray alloc];

```

Please help. Thanks.

Answer: 
No, you absolutely cannot just say `[NSMutableArray alloc]`. Calling a method on the results of sending `+alloc` to *any* class is absolutely incorrect unless that method is one of the `-init...` methods. All `+alloc` does is reserve the memory for the object. It's basically equivalent to calling `calloc(sizeof(class), 1)`. The `-init` method is crucial to actually initialize the object into a working state.
[Apple Reference](https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSMutableArray_Class/Reference/Reference.html)

For the best performance when using NSMutableArrays, you always want to use `initWithCapacity:25` or thereabouts. This clears enough memory for a reasonable amount of rows, or entries. If you leave it at init, I believe it will init to initial capacity 0, which means you will have to allocate new memory every time you add something to it, which will hurt your apps' performance.